난이도 | 풀이 시간 | 시간 제한 | 메모리 제한 |
---|---|---|---|
1 | 30분 | 1초 | 128MB |
동네 편의점의 주인인 동빈이는 N개의 동전을 가지고 있습니다. 이때 N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하세요.
예를 들어, N = 5이고, 각 동전이 각각 3원, 2원, 1원, 1원, 9원까지(화폐 단위) 동전이라고 가정합시다. 이때 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 8원입니다.
또 다른 예시로, N = 3이고, 각 동전이 각각 3원, 5원, 7원짜리(화폐 단위) 동전이라고 가정합시다. 이때 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 1원입니다.
5
3 2 1 1 9
8
function solution(N, data) {
const n = Number(N);
const numbers = data.split(' ').map(x => Number(x));
numbers.sort((a, b) => a - b);
let target = 1;
for (let i = 0; i < numbers.length; i++) {
if (target < numbers[i]) {
break;
}
target += numbers[i];
}
console.log(target);
}
n = int(input())
data = list(map(int, input().split()))
data.sort()
target = 1
for x in data:
# 만들 수 없는 금액을 찾았을 때 반복 종료
if target < x:
break
target += x
# 만들 수 없는 금액 출력
print(target)
이 문제는 해결 방법조차 생각이 나지 않아 정답과 해설을 봤다. 처음엔 해설을 봐도 이해가 안 갔는데, 2번 읽으니 이해가 갔다. 알고 나니 코드도 쉽게 작성할 수 있는 문제였다. 내가 푼 것이 아니니 다시 풀어봐야겠다.