반응형
쉬운 거스름돈 문제. 정말 쉬운 문제다. 사실 이건 레벨1 문제가 아닌가 싶었는데. 거의 비슷한 문제를 아주 맨 처음 파이썬을 배울 때 예제로 봤던 것도 같다.
문제
손님에게 거슬러 주어야 할 금액 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를 출력해준다.
반응형
'DEVELOP > Algorithm' 카테고리의 다른 글
[C] SW Expert Academy 문제풀이 :: 1966 번 (0) | 2018.09.17 |
---|---|
[C] SW Expert Academy 문제풀이 :: 5431번 (0) | 2018.09.14 |
[C] SW Expert Academy 문제풀이 :: 5356번 (0) | 2018.09.13 |
[C] SW Expert Academy 문제풀이 :: 1989번 (0) | 2018.09.12 |
[C] SW Expert Academy 문제풀이 :: 2001번 (0) | 2018.09.08 |
[C] SW Expert Academy 문제풀이 :: 2005번 (0) | 2018.09.07 |
[C] SW Expert Academy 문제풀이 :: 1926번 (0) | 2018.09.06 |
[C] SW Expert Academy 문제풀이 :: 2007번 (0) | 2018.09.05 |