본문 바로가기

코딩 테스트/백준 파이썬 문제 풀이

(62)
[백준 10757번 파이썬] 큰 수 A+B 이번 문제는 파이썬 언어를 사용하고 있는 우리에게는 아주 좋은 소식이다.. 큰 수를 다룰수록 실행 시간이 많이 소요되는 다른 언어들과는 다르게 파이썬은 이러한 소요 시간은 줄이기 위해 개발된 언어로 그저 평범하게 두 수를 입력받아 더하는 코드만 작성해도 시간 제한에 걸리지 않는다 A, B = map(int, input().split()) print(A+B) 즉, 위와 같이 평범하게 코드를 작성만 해줘도 정답이 된다
[백준 2839번 파이썬] 설탕 배달 이번 문제는 입력받은 수만큼의 설탕을 3킬로그램/5킬로그램 봉지들을 이용해 담고 그것을 배달할 때 덜 번거롭기 위해 봉지를 최소한의 개수로 나누어 출력하는 것이 목적이다 물론 3이나 5 봉지들로 나누어 떨어지지 않는다면 -1을 출력한다 sugar = int(input()) count = 0 while sugar >= 0: if sugar % 5 == 0: count += (sugar//5) print(count) break sugar-=3 count += 1 else: print(-1) 최소한의 봉지 개수로 나누기 위해서는 5킬로그램 봉지에 전부 넣을 수 있는 5의 배수가 될 때까지 3을 빼주는 방법이 있다 그러나 계속 3을 빼줬음에도 5의 배수가 되지 않고 결국 음수가 되어버린다면 -1을 출력해주는 코..
[백준 2775번 파이썬] 부녀회장이 될테야 이번 문제는 우선 케이스 개수를 입력받고 각각 층수와 호수를 한 줄씩 입력받아 각 케이스 위치에 몇 명의 거주민이 있는지를 출력하는 문제이다 이때 거주민은 자신의 층수 밑, 호수 밑에 위치한 모든 거주민들을 더한 수다 num = int(input()) for _ in range(num): floor = int(input()) room = int(input()) f = [x for x in range(1, room+1)] for k in range(floor): for i in range(1, room): f[i] += f[i-1] print(f[-1]) 보다 쉽게 설명할 수 있는 그림을 살펴보자면 1층에는 이미 각 호수만큼의 사람들이 들어와 살고 있다 입력받은 층수와 호수에 위치한 방에는 위와 같이 사각..
[백준 10250번 파이썬] ACM 호텔 이번 문제는 우선 케이스 개수를 입력받고 호텔의 높이, 호텔의 한 층 당 방 개수, 도착한 손님이 몇 번째 손님인지도 입력받은 후에 해당 손님이 이 호텔에서 몇 호실에 배정될지를 출력해주는 코드를 작성하면 된다 num = int(input()) for i in range(num): X, Y, Z = map(int, input().split()) top = Z%X room = Z//X+1 if top == 0: top = X room = Z//X print(f'{top*100+room}') 참고로 호텔 방을 배정하는 순서는 엘리베이터가 존재하는 왼쪽에서부터 아래에서 위 방향으로 진행된다 이 호텔 문제에서도 당연히 수식을 찾아내야 하는데 수식 관련 문제에서 쉽게 볼 수 있는 몫 나눗셈/나머지 나눗셈을 이용해..
[백준 2869번 파이썬] 달팽이는 올라가고 싶다 이번 문제는 세 번째 입력값만큼 크기의 나무 막대에서 낮에 첫 번째 입력값만큼 올라가고, 밤에 두 번째 입력값만큼 미끄러지는 달팽이가 나무 막대를 모두 올라가는 데 며칠이 걸리는지 출력하면 된다 import math A, B, V = map(int, input().split()) day = math.ceil((V-A)/(A-B))+1 print(day) ceil이라는, 수식 결과 소수값이 나오면 무조건 올림하는 함수를 이용해서 나무 막대 높이 - 낮에 움직이는 거리 낮에 움직이는 거리 - 밤에 미끄러지는 거리 결과값을 나누고 +1을 해주는데 그 이유는 우선 나무 막대 높이에서 낮에 움직이는 거리를 뺀 수로 나누기를 했기 때문에 첫 날 낮에 움직인 것이 자연스럽게 이 수식에서 제외되기 때문이다 그리고 첫날..
[백준 1193번 파이썬] 분수찾기 입력받은 숫자 번째에 위치한 분수를 출력해주면 되는 문제이다 여기에서 숫자 번째는 이 표와 같이 지그재그로 세는 것으로 첫 번째는 1/1, 두 번째는 1/2, 세 번째는 2/1, 네 번째는 3/1과 같은 형식을 띤다 num = int(input()) line = 0 max_num = 0 while num > max_num: line += 1 max_num += line gap = max_num - num if line % 2 == 0: top = line - gap under = gap + 1 else: top = gap + 1 under = line - gap print(f'{top}/{under}') 이 챕터에서는 문제 속에 있는 수식을 찾아내는 게 주된 것으로 이번 문제에서 우리가 찾아야 한 것은 ..
[백준 2292번 파이썬] 벌집 이번 문제는 꽤 복잡해 보이는 수식을 직접 찾아내야 하는 문제이다 일단 1이라고 적혀 있는 정가운데에서 입력값이 적혀 있는 위치까지 몇 칸을 지나가는지만 출력하는 코드를 작성하면 된다 num = int(input()) nums_bee = 1 count = 1 while num > nums_bee: nums_bee += 6 * count count += 1 print(count) 문제에 나와 있는 벌집 문양에서 1부터 7번 방 방향으로 나 있는 모든 방을 확인해 보면 1 - 7 - 19 - 37 - 61 즉, 숫자들 사이의 차이가 6 - 12 - 18 - 24 만큼 나게 된다 이렇게 되면 숫자들 사이에 6의 배수라는 규칙을 발견할 수 있고 위의 정답 코드는 이런 성질을 이용해서 작성한 것이다 6의 배수를 ..
[백준 1712번 파이썬] 손익분기점 이번 문제는 고정 비용, 가변 비용, 책정된 가격을 순서대로 입력받고 이 가격들을 이용해 손익분기점을 계산하면 된다. 여기에서 손익분기점은 고정 비용 + 물건 하나 당 붙는 가변 비용의 값을 넘기는 팔린 n 개의 물건 개수, 즉 n을 의미한다 A, B, C = map(int, input().split()) if B >= C: print("-1") else: print(A//(C-B)+1) 쉽게 이해해 보자면 고정 비용은 불변하지 않고, 추가되지 않는 비용이다 가변 비용은 한 대를 생산할 때마다 반복적으로 발생하는 비용이기 때문에 n개의 물건을 팔아 C*n 만큼의 수익이 난다고 해도 A + B*n 만큼의 돈이 생산 비용으로 빠져나감을 의미한다 즉, C가 B보다 작은 비용으로 책정된다면 몇 만 개의 물건을 ..