https://www.acmicpc.net/problem/11047
n, k = map(int, input().split())
a = []
cnt = 0
for i in range(n):
a.insert(0, int(input()))
for i in a:
cnt += k // i
k %= i
if k == 0:
break
print(cnt)
1. 나눌 수 있는 가장 높은 숫자로 나눔 -> cnt
2. 나머지 -> 나눌 수 있는 가장 높은 숫자로 나눔 -> cnt
3. 반복
위의 알고리즘을 수행하기 위해 입력되는 가치들을 내림차순으로 정렬하였다.
(가치는 처음부터 오름차순으로 입력되기 때문에 입력 받는 순으로 리스트의 맨 앞 인덱스에 추가시킴)
그 후 리스트 안을 돌면서 1~2 과정 수행하고 k=0이 됐을 때 반복을 중단하였다.
'알고리즘 > 백준' 카테고리의 다른 글
백준 1541: 잃어버린 괄호 (Python) (0) | 2021.09.27 |
---|---|
백준 1931: 회의실 배정 (Python) (0) | 2021.09.27 |
백준 11399: ATM (Python) (0) | 2021.09.25 |
백준 18870: 좌표 압축 (Python) (0) | 2021.09.15 |
백준 10814: 나이순 정렬 (Python) (0) | 2021.09.15 |