백준 [11047] - 동전 0
문제
https://www.acmicpc.net/problem/11047
작성한 코드
import sys
input = sys.stdin.readline
N, K = map(int, input().split())
money = list()
count = 0
for i in range(N):
money.append(int(input().rstrip()))
money.reverse()
for j in money:
n = K // j
if n != 0:
count += n
K %= j
if K == 0:
break
else:
continue
print(count)
- N과 K를 공백 기준으로 한 줄에 입력받는다.
- money라는 list를 선언하고, N의 개수만큼 for문을 돌려 int형 값을 입력받아 append()로 money리스트에 추가한다.
- 큰 수부터 비교하기 위해서 money리스트를 reverse()를 사용하여 거꾸로 나열한다.
- for문을 돌려 money 안의 값들을 하나씩 꺼내 비교한다.
- 입력받았던 K를 j로 나눈 몫을 n이라는 변수에 저장한다.
- 만약 n의 값이 0이 아니라면(나누어지는 경우),
동전의 개수를 나타내는 count에 n만큼 더해주고 / K에 K를 j로 나눈 나머지를 저장하고 / 다시 for문을 돈다.
(이때 K가 0이라면 for문을 break로 벗어난다.)
- 만약 n의 값이 0이라면(나누어지지 않는경우), continue로 패스한다.
- 최종적으로 동전 개수의 최소값을 나타내는 count를 print()로 출력한다.
cf.) 내림차순으로 정렬하고자 하는 목적이기도 했고, 문제 상에서 애초에 오름차순으로 입력한다는 조건이 있어 reverse()를 사용하였으나, 정확하게 하려면 sort(reverse=True)를 쓰는게 맞아보인다.
cf.) 애초에 몫을 나타내는 n이 0인지 아닌지 if문으로 구분하지 않아도 될 것 같다. count에 0을 더한다고 값이 변하지 않기 때문이다.
'코딩테스트 > 백준' 카테고리의 다른 글
백준 [11399] - ATM (0) | 2023.02.07 |
---|---|
백준 [1931] - 회의실 배정 (0) | 2023.02.02 |
백준 [2581] - 소수 (0) | 2022.08.27 |
백준 [1978] - 소수 찾기 (0) | 2022.08.27 |
백준 [10757] - 큰 수 A+B (0) | 2022.08.25 |
댓글