본문 바로가기

DEVELOP/Algorithm

[C] SW Expert Academy 문제풀이 :: 1970번

반응형

쉬운 거스름돈 문제. 정말 쉬운 문제다. 사실 이건 레벨1 문제가 아닌가 싶었는데. 거의 비슷한 문제를 아주 맨 처음 파이썬을 배울 때 예제로 봤던 것도 같다.




문제


https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PsIl6AXIDFAUq&categoryId=AV5PsIl6AXIDFAUq&categoryType=CODE


 손님에게 거슬러 주어야 할 금액 N이 입력되면

돈의 최소 개수로 거슬러 주기 위하여 각 종류의 돈이 몇 개씩 필요한지 출력하라.





풀이



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
 
int main() {
    int tc;
    scanf("%d"&tc);
 
    for (int t = 0; t < tc; t++) {
        int n;
        scanf("%d"&n);
 
        int a, b, c, d, e, f, g, h;
 
        a = n / 50000;
        n -= 50000 * a;
        b = n / 10000;
        n -= 10000 * b;
        c = n / 5000;
        n -= 5000 * c;
        d = n / 1000;
        n -= 1000 * d;
        e = n / 500;
        n -= 500 * e;
        f = n / 100;
        n -= 100 * f;
        g = n / 50;
        n -= 50 * g;
        h = n / 10;
 
        printf("#%d\n", t + 1);
        printf("%d %d %d %d %d %d %d %d\n", a, b, c, d, e, f, g, h);
    }
 
    return 0;
}
cs


n을 입력받는다.


50000원의 개수 a는 n을 50000으로 나눈 몫.


그리고 n에서 50000*a만큼을 빼준다.


10000원의 개수 b는 n을 10000으로 나눈 몫.


그리고 n에서 10000*b만큼 빼준다.


가장 작은 단위까지 반복.


루프로 좀 더 짧게 해볼까 하다가 어차피 돈 단위가 규칙적이지 않아서.. 라고 생각했는데


사실 귀찮아서였다.


방금 생각해보니 50000원부터 1/5, 1/2, 1/5, 1/2 순으로 떨어진다.


짧은 코드 구현은 가능할 듯.


근데 성능에서 별 차이없겠다 어차피.


a, b, c, d, e, f, g, h를 출력해준다.

반응형