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 이하의 자연수입니다.
<출력 조건>
- 첫째 줄에 주어진 동전들로 만들 수 없는 양의 정수 금액 중 최솟값을 출력합니다.
<문제 풀이>
1. 처음에 결과값을 1로 지정하고 각 동전을 더한다.
2. 만약 다음 동전이 결과값보다 크다면, 결과값 반환
<코드>
#220321
from itertools import combinations
n = int(input())
money = list(map(int,input().split()))
result = {i:0 for i in range(1,1000000+1)}
for i in range(1,n+1):
tmp = set(combinations(money, i))
for j in tmp:
result[sum(j)] += 1
print(sorted(result.items(), key=lambda x:x[1])[0][0])
#이취코 답
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)
<고쳐야 할 점>
- 최대한 효율적인 방법 생각하기
- 복습 알고리즘
'두두의 알고리즘 > 문제' 카테고리의 다른 글
[BFS] 난이도1.5, 이취코 152p '미로 탈출' (Python) (0) | 2022.03.23 |
---|---|
[DFS] 난이도1.5, 이취코 149p '음료수 얼려 먹기' (Python) (0) | 2022.03.23 |
[해시] 프로그래머스 L1 '신고 결과 받기' (Python) (0) | 2022.03.20 |
[탐욕법] 프로그래머스 L1 '신규 아이디 추천' (Python) (0) | 2022.03.20 |
[기타] 프로그래머스 L1 '키패드 누르기' (Python) (0) | 2022.03.20 |