공부 자료/알고리즘

[그리디] 만들 수 없는 금액

뚜루뚜루세니 2022. 8. 29. 17:09
728x90

문제

동네 편의점의 주인인 동빈이는 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 이하의 자연수입니다.

[출력 조건]
첫째 줄에 주어진 동전들로 만들 수 없는 양의 정수 금액 중 최솟값을 출력합니다.


코드

#만들 수 없는 금액
#N개의 동전을 가지고 있음 -> 만들 수 없는 양의 정수 금액 중 최솟값

n = int(input())
data = list(map(int,input().split()))

#오름차순 정령
data.sort()

result = 1

for x in data:
  if result < x:
    break
  result += x

print(result)

접근

💡 화폐단위로 오름차순 정렬 -> 1부터 차례대로 특정 금액 생성 여부 확인

현재 확인하는 동전을 이용해서 result 금액을 만들 수 있는 지 확인.
result 금액을 만들 수 있다면 result 값 업데이트.

728x90