구현
-
[백준] 1676 팩토리얼 0의 개수 with PythonPS 2023. 4. 1. 22:49
📌 BOJ 1676 팩토리얼 0의 개수 💡 조건 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하는 문제. 첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500) 수학 유형의 문제 🔖 예제 및 실행결과 예제 1 10 실행결과 1 2 예제 2 3 실행결과 2 0 ⌨️ 문제 풀이 리스트에 팩토리얼 계산 값을 미리 넣어놓으면 쉽게 해결할 수 있다. N에 해당하는 값을 꺼내 맨 우측부터 좌측 방향으로 이동하며 0이 아닌 수가 나올 때까지 0의 개수가 몇 개인지 세면 된다. 🖥 소스 코드 from sys import stdin arr = [1, 2, 6, 24, 120] n = int(stdin.readline()) if n < 5: print(0) else: for i i..
-
[백준] 14890 경사로 with PythonPS 2022. 6. 29. 22:45
📌 BOJ 14890 경사로 💡 조건 크기가 N×N인 지도가 있다. 지도의 각 칸에는 그 곳의 높이가 적혀져 있다. 오늘은 이 지도에서 지나갈 수 있는 길이 몇 개 있는지 알아보려고 한다. 길이란 한 행 또는 한 열 전부를 나타내며, 한쪽 끝에서 다른쪽 끝까지 지나가는 것이다. 길을 지나갈 수 있으려면 길에 속한 모든 칸의 높이가 모두 같아야 한다. 또는, 경사로를 놓아서 지나갈 수 있는 길을 만들 수 있다. 경사로는 높이가 항상 1이며, 길이는 L이다. 또, 개수는 매우 많아 부족할 일이 없다. 경사로는 낮은 칸과 높은 칸을 연결하며, 아래와 같은 조건을 만족해야한다. 1.경사로는 낮은 칸에 놓으며, L개의 연속된 칸에 경사로의 바닥이 모두 접해야 한다. 2.낮은 칸과 높은 칸의 높이 차이는 1이어야 ..
-
[백준] 14499 주사위 굴리기 with PythonPS 2022. 6. 14. 16:24
📌 BOJ 14499 주사위 굴리기 💡 조건 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 이 지도의 위에 주사위가 하나 놓여져 있으며, 주사위의 전개도는 아래와 같다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 주사위는 지도 위에 윗 면이 1이고, 동쪽을 바라보는 방향이 3인 상태로 놓여져 있으며, 놓여져 있는 곳의 좌표는 (x, y) 이다. 가장 처음에 주사위에는 모든 면에 0이 적혀져 있다. 지도의 각 칸에는 정수가 하나씩 쓰여져 있다. 주사위를 굴렸을 때, 이동한 칸에 쓰여 있는 수가 0이면, 주사위의 바닥면에 쓰여 있는 수가 칸에 복사된다. 0이 아닌 경우에는 칸에 쓰여 있는 수가 주사위의 바..
-
[백준] 20438 출석체크 with PythonPS 2022. 6. 5. 16:01
📌 BOJ 20438 출석체크 💡 조건 학생들은 접속 순서대로 3번부터 N + 2번까지 입장 번호를 받게 된다. 지환이가 한 학생에게 출석 코드를 보내게 되면, 해당 학생은 본인의 입장 번호의 배수인 학생들에게 출석 코드를 보내어 해당 강의의 출석을 할 수 있게끔 한다. 하지만, K명의 졸고 있는 학생들은 출석 코드를 제출하지 않고, 다른 학생들에게 보내지 않는다. 지환이는 무작위로 한 명의 학생에게 출석 코드를 보내는 행위를 Q번 반복한 뒤, 출석부 정리를 위해 특정 구간의 입장 번호를 받은 학생들 중에서 출석이 되지 않은 학생들의 수를 구하고 싶다. 1번째 줄에 학생의 수 N, 졸고 있는 학생의 수 K, 지환이가 출석 코드를 보낼 학생의 수 Q, 주어질 구간의 수 M이 주어진다. (1 ≤ K, Q ≤..
-
[백준] 20436 ZOAC 3 with PythonPS 2022. 5. 17. 00:52
📌 BOJ 20436 ZOAC 3 💡 조건 독수리 타법이란 양 손의 검지손가락만을 이용해 타자를 치는 타법이다. 성우는 한글 자음 쪽 자판은 왼손 검지손가락으로 입력하고, 한글 모음 쪽 자판은 오른손 검지손가락으로 입력한다. a의 좌표가 (x1, y1)이고, b의 좌표가 (x2, y2)일 때, a에 위치한 성우의 손가락이 b로 이동하는 데에는 a와 b의 택시 거리 |x1-x2|+|y1-y2| 만큼의 시간이 걸린다. 각 키를 누르는 데에는 1의 시간이 걸린다. 성우는 두 손을 동시에 움직일 수 없다. 성우가 사용하는 키보드는 쿼티식 키보드이며, 아래 그림처럼 생겼다. 첫 번째 줄에는 두 알파벳 소문자 sL, sR이 주어진다. sL, sR은 각각 왼손 검지손가락, 오른손 검지손가락의 처음 위치이다. 그 다음..
-
[백준] 20114 미아 노트 with PythonPS 2022. 5. 15. 02:19
📌 BOJ 20114 미아 노트 💡 조건 노트에 적힌 문자열이 번진 패턴은 일정했는데, 가령 "abc" 문자가 세로로 3글자씩, 가로로 2글자씩 번진 경우는 다음과 같았다. 아쉽게도 번진 문자열의 일부는 지워진 상태였다. 너무 많이 지워져버려서 해당 자리의 문자를 유추할 수 없는 경우, 완전히 문자열을 복원하지 못할 수도 있다. 첫째 줄에 원래 문자열의 길이 N, 세로로 번진 글자의 개수 H, 가로로 번진 글자의 개수 W가 주어진다. (1 ≤ N ≤ 100, 1 ≤ H ≤ 10, 1 ≤ W ≤ 10) H개의 줄에 걸쳐 N × W 길이의 문자열이 주어진다. 문자열은 알파벳 소문자 또는 '?'로만 이루어져 있다. '?'는 해당 자리의 문자가 지워진 경우를 뜻한다. 문자가 번진 자..
-
[백준] 20125 쿠키의 신체 측정 with PythonPS 2022. 5. 12. 01:38
📌 BOJ 20125 쿠키의 신체 측정 💡 조건 쿠키들은 신체를 측정하기 위해서 한 변의 길이가 N인 정사각형 판 위에 누워있으며, 어느 신체 부위도 판 밖으로 벗어나지 않는다. 판의 x번째 행, y번째 열에 위치한 곳을 (x, y)로 지칭한다. 판의 맨 왼쪽 위 칸을 (1, 1), 오른쪽 아래 칸을 (N, N)으로 나타낼 수 있다. 쿠키의 신체는 머리, 심장, 허리, 그리고 좌우 팔, 다리로 구성되어 있다. 그림에서 빨간 곳으로 칠해진 부분이 심장이다. 머리는 심장 바로 윗 칸에 1칸 크기로 있다. 왼쪽 팔은 심장 바로 왼쪽에 붙어있고 왼쪽으로 뻗어 있으며, 오른쪽 팔은 심장 바로 오른쪽에 붙어있고 오른쪽으로 뻗어있다. 허리는 심장의 바로 아래 쪽에 붙어있고 아래 쪽으로 뻗어 있다. 왼쪽 다리는 허리의..
-
[백준] 16926 배열 돌리기 1 with PythonPS 2022. 5. 11. 16:01
📌 BOJ 16926 배열 돌리기 1 💡 조건 크기가 N×M인 배열이 있을 때, 배열을 반시계 방향으로 돌린다. 첫째 줄에 배열의 크기 N, M과 수행해야 하는 회전의 수 R이 주어진다. 둘째 줄부터 N개의 줄에 배열 A의 원소 Aij가 주어진다. 2 ≤ N, M ≤ 300 1 ≤ R ≤ 1,000 min(N, M) mod 2 = 0 1 ≤ Aij ≤ 108 배열을 R번 회전시킨 결과를 출력하는 문제 구현 유형의 문제 🖥 소스 코드 from sys import stdin n, m, r = map(int, stdin.readline().split()) arr = [] for i in range(n): arr.append(list(map(int, stdin.readline().split()))) for _ ..
-
[백준] 14696 딱지놀이 with PythonPS 2022. 5. 11. 15:57
📌 BOJ 14696 딱지놀이 💡 조건 4, 3, 2, 1 에 해당하는 숫자가 각 몇 개인지 파악하여 승자가 누구인지 출력하는 문제 서브태크스가 존재한다. 출력의 i번째 (1 ≤ i ≤ N) 줄에 정확히 한 글자를 출력하는데, 출력하는 글자는 A, B, D 중 하나로 라운드 i의 결과를 나타낸다. 각 라운드의 결과는 A가 승자라면 A, B가 승자라면 B, 무승부라면 D이다. 구현 유형의 문제 🖥 소스 코드 from sys import stdin for _ in range(int(stdin.readline())): a = list(map(int, stdin.readline().split()))[1:] b = list(map(int, stdin.readline().split()))[1:] _4a, _4b =..
-
[백준] 8911 거북이 with PythonPS 2022. 3. 21. 18:32
📌 BOJ 8911 거북이 💡 조건 2차원 평면 위에서 움직일 수 있는 거북이 로봇을 하나 가지고 있다. 거북이 로봇에게 내릴 수 있는 명령은 다음과 같이 네가지가 있다. F: 한 눈금 앞으로 B: 한 눈금 뒤로 L: 왼쪽으로 90도 회전 R: 오른쪽으로 90도 회전 L과 R명령을 내렸을 때, 로봇은 이동하지 않고, 방향만 바꾼다. 거북이는 항상 x축과 y축에 평행한 방향으로만 이동한다. 거북이가 지나간 영역을 모두 포함할 수 있는 가장 작은 직사각형의 넓이를 구하는 문제. 단, 직사각형의 모든 변은 x축이나 y축에 평행이어야 한다. 거북이는 가장 처음에 (0, 0)에 있고, 북쪽을 쳐다보고 있다. 이 경우에 거북이가 지나간 영역을 모두 포함하는 직사각형은 선분이고, 선분은 한 변이 0인 직사각형으로 생..