본문 바로가기
백준

[백준] 11047번 : 동전 0 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 9.
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. 풀이과정

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