CodingTest

SWEA - 쉬운 거스름돈(1970)

취업하고싶다! 2023. 10. 27. 16:14
 

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개

[제약 사항]
1. N은 10이상 1,000,000이하의 정수이다. (10 ≤ N ≤ 1,000,000)
2. N의 마지막 자릿수는 항상 0이다. (ex : 32850)

[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스에는 N이 주어진다.

 

 

접근방식

돈의 종류를 money 배열에 할당

입력값 charge를 받고 ans_arr를 빈 배열로 선언

money 배열을 순서대로 돌면서 money가 입력값보다 크면 ans_arr에 0 할당(거슬러줘야하는 돈의 단위가 더 크므로 해당 화폐는 사용할 수 없음)

그 경우가 아니라면 charge를 money로 나눈 값을 ans_arr에 할당(money=10,000이고 charge=35,000이면 ans_arr에는 3이 들어감)

그리고 charge 값을 money로 나눈 나머지로 재할당(나머지는 5,000이 됨)

위 과정 반복

 

 

코드

T = int(input())
money = [50000, 10000, 5000, 1000, 500, 100, 50, 10]
for i in range(1, T+1):
    charge = int(input())
    ans_arr = []
    for j in money:
        if j > charge:
            ans_arr.append(0)
            continue
        else:
            ans_arr.append(charge//j)
            charge = charge % j
    print('#'+str(i))
    print(*(ans_arr), end=' ')
    print()

'CodingTest' 카테고리의 다른 글

SWEA - 숫자 배열 회전(1961)  (1) 2023.10.27
SWEA - 파스칼의 삼각형(2005)  (0) 2023.10.27
SWEA - 간단한 압축풀기(1946)  (0) 2023.10.25
SWEA - 두 개의 숫자열(1959)  (0) 2023.10.25
Programmers - 성격 유형 검사하기  (0) 2023.10.24