Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 스택과 힙
- 알고리즘
- 코테
- 딕셔너리
- 딥러닝
- 프로그래머스
- Merge sort
- 비지도학습
- 지도학습
- 파이썬 알고리즘
- 강화학습
- 머신러닝
- bineary search
- post
- 오버라이딩
- 이진탐색
- 파이썬 오류
- 멱등
- 자바
- 파이썬
- 백준
- 캐싱
- 코딩테스트
- BOJ
- 해시
- 코딩
- 너비우선탐색
- HTTP
- 깊이우선탐색
- rest api
Archives
- Today
- Total
chae._.chae
이코테 - [만들 수 없는 금액] 본문
728x90
반응형
문제
- 동네 편의점의 주인인 동빈이는 N개의 동전을 갖고 있다. 이 때 N개의 동전을 이용해 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성해라.
입력
- 첫째 줄에는 동전의 개수를 나타내는 양의 정수 N이 주어진다. (1 <= N <= 1,000)
- 둘째 줄에는 각 동전의 화폐 단위를 나타내는 N개의 자연수가 주어지며, 각 자연수는 공백으로 구분한다. 이 때, 각 화폐 단위는 1,000,000(백만) 이하의 자연수다.
출력
- 첫째 줄에 주어진 동전들로 만들 수 없는 양의 정수 금액 중 최솟값을 출력한다.
👀 처음 내 풀이
# 내 풀이(틀림)
N = int(input())
# coins=[]
coins = list(map(int, input().split()))
coins.sort() # 작은 수부터 정렬
result = []
for i in range(len(coins)): # 동전액수와, 동전 두개 합산해서 만들 수 있는 금액 리스트에 넣어주기
result.append(coins[i])
for j in range(i+1, len(coins)):
num = coins[i] + coins[j]
result.append(num)
# 동전 세개, 혹은 네개로 만들 수 있는 금액의 시간복잡도 n^3, n^4 -> 너무 크다..
result.sort()
result = list(set(result)) # 중복제거해주기
print(result)
처음에 풀이는 맨 처음 기존의 동전 1개로 만들 수 있는 금액을 result리스트에 넣고,
동전 갯수로 2개, 3개, 4개.. 등으로 만들 수 있는 경우를 나눠서 생각하여, 동전 갯수만큼 for문을 짜야겠다 했다. 하지만, 그럼 시간복잡도가 n^3, n^4이 넘어가기에 이렇게 푸는게 아니구나 깨달았지만 어떻게 접근해야 할지를 감이 오지 않았다.
⚡ 풀이과정
동전을 오름차순 정렬한 뒤에, 1원부터 만들 수 있는지 하나씩 확인하는 과정을 거친다.
전체적인 알고리즘은 다음과 같다.
- 현재 상태를 1부터 (target-1)까지 만들 수 있는 상태라 하고, target의 금액을 만들 수 있는 지를 확인한다.
- 1부터 target을 시작하며, 만들 수 있는지 확인한다.
- 해당 동전의 단위가 target보다 작을 경우 target은 만들 수 있는 금액이다.
- target을 만들 수 있다면, target값을 해당 동전의 단위를 더한 값으로 업데이트 시켜준다.
- 만들 수 없다면, 해당 target은 만들 수 없는 금액이므로, 그 값을 출력해준다.
❄ 정답
# 정답
n = int(input())
coins = list(map(int, input().split()))
coins.sort()
target = 1
for coin in coins:
if target < coin:
break
else:
target += coin
print(target)
728x90
'파이썬 알고리즘' 카테고리의 다른 글
최단경로 알고리즘 (0) | 2022.02.24 |
---|---|
정렬 (0) | 2021.12.24 |
그래프 탐색 알고리즘 - DFS, BFS (0) | 2021.12.20 |
구현 문제 (지도에서 동서남북 이동문제 모음) (0) | 2021.12.19 |