[이코테 기출] 만들 수 없는 금액
업데이트:
🦥 만들 수 없는 금액
문제
동네 편의점의 주인인 동빈이는 N개의 동전을 가지고 있습니다. 이때 N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하세요.
예를 들어, N=5 이고, 각 동전이 각각 3원, 2원, 1원, 1원, 9원짜리(화폐 단위) 동전이라고 가정합시다. 이때 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 8원입니다.
또 다른 예시로, N=3이고, 각 동전이 각각 3원, 5원, 7원 동전이라고 가정합시다. 이때 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 1원입니다.
입력/출력
- 입력
- 첫 째줄에는 동전의 개수를 나타내는 양의 정수 N이 주어집니다. (1≤N≤1,000)
- 둘째 줄에는 각 동전의 화폐 단위를 나타내는 N개의 자연수가 주어지며, 각 자연수는 공백으로 구분합니다. 이때, 각 화폐 단위는 1,000,000 이하의 자연수입니다.
5 3 2 1 1 9 - 출력
- 첫째 줄에 주어진 동전들로 만들 수 없는 양의 정수 금액 중 최솟값을 출력합니다.
8
풀이
🔎 아이디어
- 정렬 + 그리디 알고리즘 적용
- 1부터 차례대로 특정한 금액을 만들 수 있는 확인
- 처음에는 금액 1을 만들 수 있는지 확인 → target = 1
- target = 1을 만족하는지 확인 → target = 1 + 1 = 2 update
- target = 2를 만족하는지 확인 → target = 2 + 2 = 4 update
- target = 4를 만족하는지 확인 → target = 4 + 3 = 7 update
- target = 7을 만족하는지 확인 → 8인 동전이 있으므로, 7을 만드는 방법은 없음
- 만들 수 없다면 종료
🔎 코드
# 만들 수 없는 금액
x = int(input())
list_x = list(map(int, input().split()))
list_x.sort()
money = 1
for i in list_x:
# 만들 수 없는 금액이 있다면 종료
if money < i:
break
money += i
print(money)
댓글남기기