PS
-
[백준] 15792 A/B - 2 with PythonPS 2023. 4. 10. 13:03
📌 BOJ 15792 A/B - 2 💡 조건 두 정수 A와 B를 입력받은 다음, A/B 의 값을 출력하는 문제. 첫째 줄에 A와 B가 주어진다. (0 < A, B ≤ 10,000) 이 문제는 서브태스크가 있다. 구현, 수학 유형의 문제 🔖 예제 및 실행결과 예제 1 1 3 실행결과 1 0.33333333333333333333333333333333 예제 2 4 5 실행결과 2 0.8 ⌨️ 문제 풀이 해당 문제의 서브태스크 10번을 보면, 절대/상대 오차 허용 범위가 10**-1000 이다. 이는 소수점 1000자리까지의 수의 오차범위를 허용해준다는 것이니, 이를 생각하고 구현을 하면된다. 실수에는 정수부와 소수부가 있다. 이를 따로 나누어 계산을 해주고 문자열로 붙여서 출력하면 편하다. 🖥 소스 코드 fr..
-
[백준] 2455 지능형 기차 with PythonPS 2023. 4. 10. 11:36
📌 BOJ 2455 지능형 기차 💡 조건 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. 이 장치를 이용하여 출발역에서 종착역까지 가는 도중 기차 안에 사람이 가장 많을 때의 사람 수를 계산하려고 한다. 기차를 이용하는 사람들은 질서 의식이 투철하여, 역에서 기차에 탈 때, 내릴 사람이 모두 내린 후에 기차에 탄다고 가정한다. 이 기차는 다음 조건을 만족하면서 운행된다고 가정한다. 기차는 역 번호 순서대로 운행한다. 출발역에서 내린 사람 수와 종착역에서 탄 사람 수는 0이다. 각 역에서 현재 기차에 있는 사람보다 더 많은 사람이 내리는 경우는 없다. 기차의 정원은 최대 10,000명이고, 정원을 초과하여 타는 경우는 없다. 4개의 역에 대해 기차에서 내린 사람 수와 탄 사람 수가..
-
[백준] 1072 게임 with PythonPS 2023. 4. 7. 15:18
📌 BOJ 1072 게임 💡 조건 형택이는 잠시 코딩을 하는 사이에 자신의 게임 실력이 눈에 띄게 향상된 것을 알았다. 형택이는 앞으로의 모든 게임에서 지지 않는다. 형택이는 게임 기록을 삭제 할 수 없기 때문에, 자신의 예전 기록이 현재 자신의 엄청난 실력을 증명하지 못한다고 생각했다. 게임 기록은 다음과 같이 생겼다. 게임 횟수 : X 이긴 게임 : Y (Z%) Z는 형택이의 승률이고, 소수점은 버린다. 예를 들어, X=53, Y=47이라면, Z=88이다. X와 Y가 주어졌을 때, 형택이가 게임을 최소 몇 번 더 해야 Z가 변하는지 구하는 문제 첫째 줄에 형택이가 게임을 최소 몇 판 더 해야하는지 출력한다. 만약 Z가 절대 변하지 않는다면 -1을 출력한다. 1 ≤ X ≤ 1,000,000,000 0 ..
-
[백준] 9658 돌 게임 4 with PythonPS 2023. 4. 7. 15:07
📌 BOJ 9658 돌 게임 4 💡 조건 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개, 3개 또는 4개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 지게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 문제. 게임은 상근이가 먼저 시작한다. 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1000) 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. 다이나믹 프로그래밍 유형의 문제 🔖 예제 및 실행결과 예제 1 6 실행결과 1 SK ⌨️ 문제 풀이 돌 게임 3 와의 상황을 반대로 계산하면 된다. 🖥 소스 코드 from sys import stdin n = int(stdin.readline()) dp = [0, 0, ..
-
[백준] 9657 돌 게임 3 with PythonPS 2023. 4. 4. 17:46
📌 BOJ 9657 돌 게임 3 💡 조건 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개, 3개 또는 4개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 문제. 게임은 상근이가 먼저 시작한다. 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1000) 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. 다이나믹 프로그래밍 유형의 문제 🔖 예제 및 실행결과 예제 1 6실행결과 1 SK⌨️ 문제 풀이 상근이를 기준으로 DP 배열을 구성할 것이다. 그렇다면, 어떻게하면 상근이가 이길 수 있을지에 대해서 생각해보면 좋다. "완벽하게 게임을 한다" 라는 구절을 통해서 어떻게든..
-
[백준] 9656 돌 게임2 with PythonPS 2023. 4. 4. 17:31
📌 BOJ 9656 돌 게임2 💡 조건 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 지게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 문제. 게임은 상근이가 먼저 시작한다. 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1000) 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. 다이나믹 프로그래밍 유형의 문제 🔖 예제 및 실행결과 예제 1 4 실행결과 1 SK ⌨️ 문제 풀이 BOJ 9655 돌 게임 의 문제 풀이와 매우 비슷하다. 9655 돌 게임 문제 풀이 를 참고하여 아이디어를 얻어보자. 🖥 소스 코드 from sys import stdin pri..
-
[백준] 9655 돌 게임 with PythonPS 2023. 4. 4. 17:19
📌 BOJ 9655 돌 게임 💡 조건 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 문제. 게임은 상근이가 먼저 시작한다. 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1000) 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. 다이나믹 프로그래밍 유형의 문제 🔖 예제 및 실행결과 예제 1 5 실행결과 1 SK ⌨️ 문제 풀이 상근이를 기준으로 DP 배열을 구성할 것이다. 그렇다면, 어떻게하면 상근이가 이길 수 있을지에 대해서 생각해보면 좋다. "완벽하게 게임을 한다" 라는 구절을 통해서 어떻게든 상근이..
-
[백준] 3943 헤일스톤수열 with PythonPS 2023. 4. 4. 17:09
📌 BOJ 3943 헤일스톤수열 💡 조건 헤일스톤 수열은 아래와 같이 정의한다. n이 짝수라면, 2로 나눈다. n이 홀수라면, 3을 곱한 뒤 1을 더한다. 헤일스톤 추측은 임의의 양의 정수 n으로 수열을 시작한다면, 항상 4, 2, 1, 4, 2, 1,...로 끝난다는 추측이다. 이 문제에서는 1이 나오면 수열이 끝난 것으로 처리한다. n이 주어졌을 때, 이 수열에서 가장 큰 값을 찾아 출력하는 문제 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 100,000)가 주어진다. 다음 줄부터 T개의 줄에는 헤일스톤 수열의 시작값 n이 주어진다. (1 ≤ n ≤ 100,000) 구현, 시뮬레이션 유형읨 문제 🔖 예제 및 실행결과 예제 1 4 1 3 9999 100000 실행결과 1 1 16 101248 10..
-
[백준] 1652 누울 자리를 찾아라 with PythonPS 2023. 4. 3. 16:40
📌 BOJ 1652 누울 자리를 찾아라 💡 조건 코레스코 콘도에 있는 방은 NxN의 정사각형모양으로 생겼다. 방 안에는 옮길 수 없는 짐들이 이것저것 많이 있어서 영식이의 누울 자리를 차지하고 있었다. 영식이가 누울 수 있는 자리에는 조건이 있다. 똑바로 연속해서 2칸 이상의 빈 칸이 존재하면 그 곳에 몸을 양 옆으로 쭉 뻗으면서 누울 수 있다. 가로로 누울 수도 있고 세로로 누울 수도 있다. 누울 때는 무조건 몸을 쭉 뻗기 때문에 반드시 벽이나 짐에 닿게 된다. (중간에 어정쩡하게 눕는 경우가 없다.) 방의 크기 N과 방의 구조가 주어졌을 때, 가로로 누울 수 있는 자리와 세로로 누울 수 있는 자리의 수를 구하는 문제 N은 1이상 100이하의 정수이다. '.'은 아무것도 없는 곳을 의미하..
-
[백준] 1789 수들의 합 with PythonPS 2023. 4. 3. 16:26
📌 BOJ 1789 수들의 합 💡 조건 서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까? 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. 첫째 줄에 자연수 N의 최댓값을 출력한다. 수학, 그리디 알고리즘 유형의 문제 🔖 예제 및 실행결과 예제 1 200 실행결과 1 19 ⌨️ 문제 풀이 계산하고 있는 계산값(A), 정답(B), 더할 수(C)를 각각 변수로 만든다. while를 이용해 반복적인 계산을 한다. A += C 후, C += 1, B += 1 (2)번의 반복문은 A가 입력 받은 S 보다 작을때만 반복한다. while 의 조건에 해당되지 않아 반복문이 종료되었으면 조건에 맞게 출력한다. 만약 A가 S와 값이 같다면 ans를, 그게..