티스토리 뷰

728x90
반응형

문제

 

www.acmicpc.net/problem/11047

 

11047번: 동전 0

첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)

www.acmicpc.net

 

코드

N, K = map(int, input().split())

d = [int(input()) for _ in range(N)]

d.sort(reverse=True)

result = 0
for i in range(N):
    if d[i] > K:
        continue
    else:
        result += K // d[i]
        K = K % d[i]
print(result)

 

코드설명

그리디 알고리즘 문제로 눈앞에 최적의 해만 선택해도 최적의 해를 얻을 수 있다.

 

최적의 해를 선택할 수 있도록 정렬을 거꾸로 만들어주고 K의 값보다 나눠야 하는 값이 크다면 다음으로 넘어간다.

K와 같거나 작은 수중에 가장 큰수로 나눠주고 K값을 갱신해준다음 for문이 끝날때 까지 돌면된다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31