일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 추상클래스와인터페이스
- 유니티
- project3
- 크래프톤정글4기
- 핀토스
- 크래프톤 정글 4기
- kraftonjungle
- 4기
- KRAFTON JUNGLE
- 알고리즘수업-너비우선탐색2
- anonymous page
- 크래프톤정글
- 네트워크
- BFS
- User Stack
- c#
- TiL
- 티스토리챌린지
- C
- 오블완
- pintos
- 알고리즘
- 백준
- 전쟁-전투
- 크래프톤 정글
- 연결리스트
- Unity
- 파이썬
- 이벤트 함수 실행 순서
- 다익스트라
- Today
- Total
말감로그
[백준] 11047 동전 0 (파이썬) 본문
11047번: 동전 0
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)
www.acmicpc.net
문제
준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.
동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)
둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)
출력
첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다.
예제 입력 1 복사
10 4200
1
5
10
50
100
500
1000
5000
10000
50000
예제 출력 1 복사
6
예제 입력 2 복사
10 4790
1
5
10
50
100
500
1000
5000
10000
50000
예제 출력 2 복사
12
주제 - 그리디 알고리즘
그리디 알고리즘이란 문제를 해결하는 과정에서 매 순간, 최적이라 생각되는 해답을 찾으며, 이를 토대로 최종 문제의 해답에 도달하는 문제 해결 방식이다.
이 문제는 4200원을 만드는데 필요한 동전 개수의 최솟값을 출력하라고 하니까
4200원을 만드는 최소한의 방법은 1000원 4개, 100원 2개 총 6개의 동전이 필요한 것이다.
그래서 내가 생각한 방법은
1. 우선 최소로 나누려면 가장 큰 동전부터 나눠야 하기 때문에 주어진 동전들을 내림차순으로 정렬해줘야 한다.
2. 가장 큰 동전부터 나눠서 몫을 카운트해 주고(필요한 동전 개수), 나눈 나머지를 다시 나눠주면서 반복한다.
이러면 총 필요한 최소 개수를 구할 수 있을 것이다!
- 오름차순 정렬 : sorted()
- 내림차순 정렬 : sorted(reverse=True)
완성코드
import sys
input = sys.stdin.readline
n, k = map(int,input().split())
coins = []
for i in range(n):
coins.append(int(input()))
coins.sort(reverse=True)
cnt = 0
for i in range(n):
#큰 동전부터 나눠서 몫을 카운트
cnt += k // coins[i]
#나머지를 다시 나눠주면서 반복
k = k % coins[i]
print(cnt)
'백준' 카테고리의 다른 글
[백준] 1026 보물 (파이썬) (2) | 2024.01.31 |
---|---|
[백준] 1541 잃어버린 괄호 (파이썬) (3) | 2024.01.31 |
[백준] 11053 가장 긴 증가하는 부분 수열 (파이썬) (1) | 2024.01.31 |
[백준] 12865 평범한 배낭 (파이썬) (0) | 2024.01.31 |
[백준] 9251 LCS (파이썬) (0) | 2024.01.31 |