[백준 | Java] 11047 동전 0

알린·2024년 4월 5일

baekjoon

목록 보기
45/68

내 풀이

동전의 사용 최소 개수를 구하는 문제이므로 그리디 알고리즘을 사용해 각 단계마다 사용할 수 있는 가장 최대 금액의 동전을 선택하면 전체 답이 구해진다.
풀이과정은 다음과 같다.

  1. K보다 작은 가치의 동전 중 가장 큰 금액을 K 이하로 사용
  2. 1에서 사용된 금액을 K에서 뺌
  3. 2에서 나온 남은 금액보다 작은 가치의 동전 중 가장 큰 큼액을 남은금액 이하로 사용
  4. 1~3번 반복
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    static int N, K;
    static int[] worth;
    static int min = 0;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        N = Integer.parseInt(st.nextToken());
        K = Integer.parseInt(st.nextToken());
        worth = new int[N];

        for (int i = 0; i < N; i++) {
            worth[i] = Integer.parseInt(br.readLine());
        }
        min();
        System.out.println(min);
    }

    static void min() {
        for (int i = N - 1; i >= 0; i--) {
            if (worth[i] <= K) {
                min += (K / worth[i]);
                K = K % worth[i];
            }
        }
    }
}

profile
짱이 되고싶은 개발 기록

0개의 댓글