그리디
현재 상황에서 지금 당장 좋은 것만 고르는 방법
N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하세요.
5
3 2 1 1 9
8
N = int(input())
data = list(map(int, input().split()))
data.sort()
target = 1
for i in data:
# 만들 수 없는 금액을 찾았을 때 반복 종료
if target < i:
break
target += i
# 만들 수 없는 금액 출력
print(target)
1, 2, 3
target 1로 설정 -> 가능
+1
target 2로 설정 -> 가능
+2
target 4로 설정 -> 가능
+3
target 7로 설정 -> 불가능
=>7
1 1 2 3 9
1로 설정 -> 가능
+1
2로 설정 -> 가능
+1
3로 설정 -> 가능
+2
5로 설정 -> 가능
+3
8로 설정 -> 불가능
=> 8
아이디어를 떠올리는 데 너무 어려웠던 문제...
이러한 유형의 알고리즘을 알고 있어야 풀 수 있는 문제같다.