알고리즘
욕심쟁이 알고리즘의 대표적인 문제로 원래는 동적계획법을 사용해야 최적의 해를 도출할 수 있지만, 주어지는 동전이 특이하기 때문에 욕심쟁이 알고리즘을 사용해야만 최적의 해를 도출할 수 있다. 왜 그런지는 추후에 설명하기로 하겠다.
K원보다 작거나 같은 경우에 대해서 동전의 값을 빼고 K를 업데이트하는 과정을 K가 0이 될 때까지 반복해주면 풀 수 있다. 문제에서 요구하는 것은 K원을 최소로 만드는 동전의 개수이므로, 횟수를 세기 위한 변수 cnt를 이용해서 K에서 값을 빼줄 때마다 cnt를 1씩 증가시켜주면 문제에서 요구하는 답을 도출할 수 있다.
소스코드
문제링크
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
'Coding Test > Solved' 카테고리의 다른 글
[BOJ] 백준 14916번 - 거스름돈(with Java) (0) | 2021.12.05 |
---|---|
[BOJ] 백준 2293번 - 동전 1(with Java) (0) | 2021.08.02 |
[BOJ] 백준 11403번 - 경로 찾기(with Java) (0) | 2021.07.25 |
[BOJ] 백준 1904번 - 01타일(with Java) (0) | 2021.07.19 |
[BOJ] 백준 11724번 - 연결 요소의 개수(with Java) (0) | 2021.07.19 |
댓글