REC
SWEA 1970번: 쉬운 거스름돈 (D2) - Python 풀이 본문
제목처럼 쉬운 문제.
문제 설명
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
우리나라 화폐 ‘원’은 금액이 높은 돈을 우선적으로 계산할 때 돈의 개수가 가장 최소가 된다.
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개
[제약 사항]
- N은 10이상 1,000,000이하의 정수이다. (10 ≤ N ≤ 1,000,000)
- 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
풀이 과정
거슬러 주어야 할 금액 N이 입력될 때, 화폐를 최소 개수로 거슬러 주기 위하여 각 종류의 돈이 몇 개씩 필요한지 출력해야 합니다.
8개의 화폐를 금액이 높은 돈으로 먼저 계산하도록 50000원을 맨앞에, 10원을 맨뒤에 배치하는 배열을 만듭니다.
현재 N과 화폐 배열의 값을 앞에서부터 하나씩 비교해서 N이 더 크거나 같으면 N 나누기 화폐의 몫이 그 화폐를 사용한 개수가 됩니다.
사용한 화폐에 따라 N의 값을 계속 업데이트 하면서 어떤 화폐를 몇 개 써야 하는지 채워가면 됩니다.
정답 코드
T = int(input())
for test_case in range(1, T + 1):
N = int(input())
# 금액이 높은 돈을 앞에 배치
money = [50000, 10000, 5000, 1000, 500, 100, 50, 10]
# 각 화폐 사용 개수
answers = [0 for _ in range(len(money))]
for i in range(len(money)):
# 현재 화폐가 N 값의 일부가 될 수 있다면
if money[i] <= N:
# 현재 화폐 사용 개수 계산
answers[i] = N // money[i]
# 사용한 돈만큼 N은 감소
N -= answers[i] * money[i]
print("#%d" % test_case)
print(*answers)
이상입니다.
'Algorithm' 카테고리의 다른 글
SWEA 1215번: 회문1 (D3) - Python 풀이 (2) | 2025.05.15 |
---|---|
SWEA 1209번: Sum (D3) - Python 풀이 (1) | 2025.05.15 |
SWEA 1288번: 새로운 불면증 치료법 (D2) - Python 풀이 (0) | 2025.05.15 |
SWEA 2805번: 농작물 수확하기 (D3) - Python 풀이 (1) | 2025.05.14 |
SWEA 2007번: 패턴 마디의 길이 (D2) - Python 풀이 (0) | 2025.05.14 |