백준
[백준] 11047번 : 동전 0 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 7. 9. 13:08
728x90
반응형

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
1. 문제 설명


2. 풀이과정
- sys.stdin.readlin() 함수를 활용하여 입력받기 위해 sys 모듈을 불러온다. import sys
- 동전의 개수와 금액을 입력받는다. N, K = map(int, sys.stdin.readline().split())
- 각 동전의 금액을 저장할 리스트를 생성한다. li = list()
- 동전의 개수만큼 반복하며 각 동전의 금액을 입력받고 입력받은 값을 리스트에 저장한다. for i in range(N): li.append(int(sys.stdin.readline()))
- 최소 동전의 개수로 금액을 맞춰야 하기 때문에 오름차순으로 입력받아 저장한 각 동전의 금액을 내림차순으로 바꿔준다. li.reverse()
- 사용한 동전의 개수를 저장해 줄 변수를 생성하고 초기화한다. count = 0
- 동전의 금액을 큰 값부터 하나씩 추출한다. for i in li
- 만약 추출한 동전의 금액이 맞춰야 하는 금액보다 같거나 작으면 if (i <= K)
- 동전의 개수에 금액을 동전의 금액으로 나눈 몫을 저장한다. count += (K // i)
- 금액에서 동전의 개수에 동전의 금액을 곱한 값을 빼준다. K -= (K // i) * i
- 만약 금액을 모두 맞추면 종료한다. if (K == 0): break
- 총 사용한 동전의 개수를 출력한다. print(count)
반응형
3. 소스코드
import sys
N, K = map(int, sys.stdin.readline().split())
li = list()
for i in range(N):
li.append(int(sys.stdin.readline()))
li.reverse()
count = 0
for i in li:
if (i <= K):
count += (K // i)
K -= (K // i) * i
if (K == 0):
break
print(count)728x90
반응형