일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 영어
- 권주현의 진짜 영국 영어
- 1992번
- 신규아이디추천
- 11727번
- Spring Security
- 1057번
- 분할정복
- codility
- WebSecurityConfigurerAdapter
- 입이 트이는 영어
- github
- 2630번
- 1759번
- EBS어학당
- 11047번
- 9251번
- 알고리즘
- 2163번
- 파이썬
- python
- programmers
- 백준
- Java
- 18406번
- caniuse
- 프로그래머스
- BinaryGap
- 1793번
- SecurityFilterChain
Archives
- Today
- Total
철갑이의 이모저모
[백준] 11047번(동전 0) with Python 본문
728x90
문제
풀이
동전의 갯수가 최솟값을 가져야 하기 때문에 큰 수 부터 나눠준다. 동전의 가치가 오름차순으로 입력이 되기 때문에 coin[::-1](리스트 역으로 출력) 사용, pop() 으로 작성해도 된다.
1. k원을 동전의 가치로 나눠주고(몫만 필요하기 때문에 // 사용)
2. k원에서 (1에서 나온 몫 * 동전의 가치)를 빼준 후
3. 코인 개수를 1에서 나온 몫 만큼 증가
위 작업을 k가 0원이 될 때 까지 반복한다.
답
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
coin = []
coin_cnt = 0
for i in range(n) :
coin.append(int(input()))
while k > 0 :
for c in coin[::-1] :
cnt = k // c
k -= cnt * c
coin_cnt += cnt
print(coin_cnt)
# 다른 풀이
n, k = map(int, input().split())
coin = []
coin_cnt = 0
for i in range(n) :
coin.append(int(input()))
while k > 0 :
c = coin.pop()
coin_cnt += k // c
k %= c
728x90
'알고리즘' 카테고리의 다른 글
[Programmers] 정수 삼각형 with Python (0) | 2020.12.02 |
---|---|
[Programmers] 모의고사 with Python (0) | 2020.11.24 |
[백준] 9251번(LCS) with Python (0) | 2020.10.17 |
[백준] 1992번(쿼드트리) with Python (0) | 2020.10.17 |
[백준] 2630번(색종이 만들기) with Python (2) | 2020.10.17 |