728x90
728x90
문제
우리나라 화폐 ‘원’은 금액이 높은 돈을 우선적으로 계산할 때 돈의 개수가 가장 최소가 된다.
S마켓에서 사용하는 돈의 종류는 다음과 같다.
50,000 원
10,000 원
5,000 원
1,000 원
500 원
100 원
50 원
10 원
S마켓에서 손님에게 거슬러 주어야 할 금액 N이 입력되면 돈의 최소 개수로 거슬러 주기 위하여 각 종류의 돈이 몇 개씩 필요한지 출력하라.
예제
N이 32850일 경우,
50,000 원 : 0개
10,000 원 : 3개
5,000 원 : 0개
1,000 원 : 2개
500 원 : 1개
100 원 : 3개
50 원 : 1개
10 원 : 0개
제약 사항
1. N은 10이상 1,000,000이하의 정수이다. (10 ≤ N ≤ 1,000,000)
2. N의 마지막 자릿수는 항상 0이다. (ex : 32850)
입력
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스에는 N이 주어진다.
출력
각 줄은 '#t'로 시작하고, 다음줄에 각 돈의 종류마다 필요한 개수를 빈칸을 사이에 두고 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
예제
[입력] | [출력] |
2 32850 160 |
#1 0 3 0 2 1 3 1 0 #2 0 0 0 0 0 1 1 1 |
문제 해결 방법
- 반복문을 이용하여 간단하게 푼 문제였다.
- 큰 단위의 수부터 정수 나눗셈(@//@) 연산을 수행하면서 해당 결과값을 리스트에 넣어준다. 그리고 동시에 금액(@money@)를 업데이트 해준다.
money = int(input())
balance_array = [0, 0, 0, 0, 0, 0, 0, 0]
index = 0
for div in [50000, 10000, 5000, 1000, 500, 100, 50, 10]:
if money == 0:
break
balance_amount = money // div
balance_array[index] = balance_amount
money %= div
index += 1
- 최종적으로 하나씩 출력해주면 된다.
answer = ' '.join(str(item) for item in balance_array)
print(f"#{test_case}\n{answer}")
코드
T = int(input())
for test_case in range(1, 1 + T):
money = int(input())
balance_array = [0, 0, 0, 0, 0, 0, 0, 0]
index = 0
for div in [50000, 10000, 5000, 1000, 500, 100, 50, 10]:
if money == 0:
break
balance_amount = money // div
balance_array[index] = balance_amount
money %= div
index += 1
answer = ' '.join(str(item) for item in balance_array)
print(f"#{test_case}\n{answer}")
참고
- 난이도: D2
728x90
728x90
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA-1954][Python] 달팽이 숫자 (1) | 2023.10.18 |
---|---|
[SWEA-1959][Python] 두 개의 숫자열 (0) | 2023.10.17 |
[SWEA-1961][Python] 숫자 배열 회전 (0) | 2023.10.17 |
[SWEA-1966][Python] 숫자를 정렬하자 (1) | 2023.10.16 |
[SWEA-1974][Python] 스도쿠 검증 (0) | 2023.10.16 |
[SWEA-1979][Python] 어디에 단어가 들어갈 수 있을까 (1) | 2023.10.14 |
[SWEA-1983][Python] 조교의 성적 매기기 (0) | 2023.10.12 |
[SWEA-1989] 초심자의 회문 검사 (1) | 2023.10.12 |