728x90
문제
문제 보러가기
2720번: 세탁소 사장 동혁
각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다.
www.acmicpc.net
입출력
입력 | 1번 줄 | 테스트 케이스 개수 n |
2~(n-1)줄 | 잔돈 | |
출력 | 잔돈개수 (쿼터, 다임, 니켈, 페니) |
풀이
n = int(input())
for _ in range(n):
money = int(input())
quarter, dime, nickel, fenny = 0, 0, 0, 0
quarter = money // 25
money -= quarter * 25
dime = money // 10
money -= dime * 10
nickel = money // 5
money -= nickel * 5
fenny = money // 1
print(quarter, dime, nickel, fenny)
1) 테스트 케이스 개수를 입력 받는다. n
2) 잔돈을 입력 받는다. money
3) 거스름돈 쿼터, 다임, 니켈, 페니를 계산한다.
3.1) money에서 각각의 거스름돈 단위만큼 나누어 몫을 구한다.
3.2) 쿼터를 제외한 나머지 잔돈 계산에서는 계산하기 전 money를 계산한다.
3.2.1) money는 이전 거스름돈의 개수 * 이전 거스름돈의 단위를 뺀다.
3.2.2) 계산된 money에서 '3.1'의 계산을 한다.
4) 거스름돈 개수를 출력한다.
✨문제 풀이 포인트
- 문제 설명은 정수가 아닌 소수로 주어졌다. 이때 소수로 바꾸지 않고, 정수로 계산해도 된다.
- 앞선 코딩을 반복문으로 묶어 코딩할 수 있다. 👇(풀이2)
풀이2
n = int(input())
changes = [25, 10, 5, 1]
for _ in range(n):
money = int(input())
for c in changes:
change = money // c
money -= change * c
print(change, end=' ')
print()
거스름돈 단위를 미리 배열에 저장한다.
거스름돈의 각각 개수를 구하는 식은 동일하기 때문에 반복문을 통해 계산할 수 있다.
💭 원래는 문제에 거스름돈 단위가 소수로 나와있어 소수를 기준으로 계산했었다.
그랬더니 소수점문제로 정확한 답이 안 나왔다. 입력값을 보면 정수이기 때문에
거스름돈의 단위를 *100해서 정수로 계산해도된다.
728x90
'CODING TEST > Beakjoon' 카테고리의 다른 글
[백준 / 파이썬 / 2869] 달팽이는 올라가고 싶다 (1) | 2023.10.30 |
---|---|
[백준 / 파이썬 / 11005] 진법 변환2 (0) | 2023.10.27 |
[백준 / 파이썬 / 2745] 진법 변환 (0) | 2023.10.27 |
[백준 / python / 10798] 세로읽기 (1) | 2023.10.24 |
[백준 / python / 2563] 색종이 (0) | 2023.10.22 |