알고리즘 문제 풀이/SWEA

[SWEA]1970. 쉬운 거스름돈 java

v 2022. 3. 7. 12:00

그리디문제!

화폐 단위는 정해져있기에 먼저 내림차순으로 배열을 만든다.

큰 값부터 나눠줄 수 있으면 나눈 후 몫을 저장하고, 화폐 단위를 바꿔준다.

현재 값이 0이 될 때까지 반복한다.

 

구현 코드

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
import java.util.*;
import java.io.*;
 
class Solution {
    public static void main(String args[]) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T;
        StringTokenizer st;
        st = new StringTokenizer(br.readLine());
        T = Integer.parseInt(st.nextToken());
 
        int[] money = { 5000010000500010005001005010 };
        StringBuffer sb = new StringBuffer();
 
        for (int test_case = 1; test_case <= T; test_case++) {
            st = new StringTokenizer(br.readLine());
            int change = Integer.parseInt(st.nextToken());
            int[] answer = new int[8];
 
            for (int i = 0; i < money.length; i++) {
                int cur = change/money[i];
                change %= money[i];
                answer[i] = cur;
            }
 
            sb.append("#" + test_case + "\n");
            for(int x : answer) sb.append(x + " ");
            sb.append("\n");
        }
 
        System.out.println(sb.toString());
    }
}
cs
반응형