백준 11047 파이썬 n, k = map(int, input().split()) coins = []; coin_count = 0 for _ in range(n): coins.append(int(input())) coins.reverse() for i, coin in enumerate(coins,1): if k == 0: break if k // coin >= 1: coin_count += k // coin k -= coin * (k//coin) print(coin_count) 동전개수의 최솟값을 구해야 하는데 문제 조건에 A(i)는 A(i-1)의 배수라고 적혀있다. 따라서 큰단위의 동전을 가능한 많이 사용하면 된다. ( 배수가 아닐경우 무작정 큰단위의 동전을 사용하면 안된다. ) 2021. 3. 25. 백준 1931 """ 최대한 많이 사용하려면? 1. 빨리 끝나는 회의부터 찾아서 2. 차례차례 회의 스케줄에 넣음 """ N = int(input()) meeting = [] for _ in range(N): meeting.append(list(map(int, input().split()))) # 끝나는 시간 오름차순으로 정렬 meeting.sort(key = lambda x: (x[1], x[0])) print(meeting) count = 1 tmp = meeting[0][1] # 첫 회의의 끝나는 시간 for i in meeting[1:]: if tmp 2021. 3. 24. 백준 16208 n = int(input()) iron_rod = sorted(list(map(int, input().split()))) sum_iron_rod = sum(iron_rod) count = 0 for i in iron_rod: sum_iron_rod -= i count += i * sum_iron_rod print(count) 비용이 최소가 되려면 곱하는 수가 작아야 한다. 예를 들어 4개 막대기의 크기가 3, 5, 4, 2 므로 (3+5+4) * 2 라는 식이 나와야 한다는 뜻이다. 2를 잘라버리고 나서는 ( 코드에서 sum_iron_rod 에서 버림 ) 3이 가장 작기때문에 (5+4) * 3 이라는 식이 나와야 최소가 된다. 2021. 3. 22. 이전 1 다음