๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

[Java] BOJ 11047 ๋™์ „ 0

by ๐ŸŠ๊ทค๐ŸŠ 2024. 7. 23.

๋ฌธ์ œ 

๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/11047

  • ์ค€๊ทœ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋™์ „์€ ์ด N์ข…๋ฅ˜์ด๊ณ , ๊ฐ๊ฐ์˜ ๋™์ „์„ ๋งค์šฐ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ๋™์ „์„ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•ด์„œ ๊ทธ ๊ฐ€์น˜์˜ ํ•ฉ์„ K๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋•Œ ํ•„์š”ํ•œ ๋™์ „ ๊ฐœ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
  • ์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)
  • ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๋™์ „์˜ ๊ฐ€์น˜ Ai๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2์ธ ๊ฒฝ์šฐ์— Ai๋Š” Ai-1์˜ ๋ฐฐ์ˆ˜)
  • ์ฒซ์งธ ์ค„์— K์›์„ ๋งŒ๋“œ๋Š”๋ฐ ํ•„์š”ํ•œ ๋™์ „ ๊ฐœ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

์•„์ด๋””์–ด

  • ๋™์ „ ๊ฐ€์น˜๋ฅผ ์ €์žฅํ•ด์„œ ๋ฐฐ์—ด์— ์ €์žฅ ํ›„, for๋ฌธ์„ ํ†ตํ•ด ๋ฐฐ์—ด์˜ ๋’ค์—์„œ๋ถ€ํ„ฐ ์ฝ”์ธ์˜ ๊ฐ€์น˜์™€ ๋งŒ๋“ค์–ด์•ผ๋˜๋Š” ๊ธˆ์•ก์„ ๋น„๊ตํ–ˆ๋‹ค.
  • ๋งŒ์•ฝ ์ฝ”์ธ์˜ ๊ฐ€์น˜๊ฐ€ ๋งŒ๋“ค์–ด์•ผ ๋˜๋Š” ๊ธˆ์•ก๋ณด๋‹ค ํด ๊ฒฝ์šฐ, ๋‹ค์Œ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋„˜์–ด๊ฐ€์„œ ํ•œ๋‹จ๊ณ„ ์ž‘์€ ์ฝ”์ธ์˜ ๊ฐ€์น˜์™€ ๋‹ค์‹œ ๋น„๊ตํ•˜๊ณ  ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์„ ๊ฒฝ์šฐ์—๋Š” ๋งŒ๋“ค์–ด์•ผ๋˜๋Š” ๊ธˆ์•ก์„ ํ•ด๋‹น ์ฝ”์ธ์˜ ๊ฐ€์น˜๋กœ ๋‚˜๋ˆˆ ๋ชซ์„ ๋™์ „์˜ ๊ฐœ์ˆ˜์— ๋”ํ•ด์ค€๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋งŒ๋“ค์–ด์•ผ ๋˜๋Š” ๊ธˆ์•ก์„ ํ•ด๋‹น ์ฝ”์ธ์˜ ๊ฐ€์น˜๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ๋งŒ๋“ค์–ด์•ผ ๋˜๋Š” ๊ธˆ์•ก์œผ๋กœ ๊ฐฑ์‹ ์‹œํ‚จ๋‹ค.
  • ๊ทธ๋ ‡๊ฒŒ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ธˆ์•ก์ด 0์›์ด ๋˜๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒํ•œ๋‹ค.  

๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค

  • X

๋‚˜๋ฆ„ ์‰ฌ์› ๋‹ค ใ…Žใ…Ž....

์ฝ”๋“œ

import java.io.*;
import java.util.*;

public class BOJ11047 {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());

        // ๋™์ „์˜ ๊ฐœ์ˆ˜
        int N = Integer.parseInt(st.nextToken());

        // ๋งŒ๋“ค์–ด์•ผ๋˜๋Š” ๊ธˆ์•ก
        int K = Integer.parseInt(st.nextToken());

        // ๋™์ „ ๊ฐ€์น˜ ์ €์žฅํ•  ๋ฐฐ์—ด
        int coins[] = new int[N];

        // ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›์•„ ๋ฐฐ์—ด์— ์ €์žฅ
        for(int i = 0; i < N; i++){
            int c = Integer.parseInt(br.readLine());

            coins[i] = c;
        }

        // ๋™์ „ ๊ฐœ์ˆ˜
        int cnt = 0;

        for(int i = N - 1; i >= 0; i--){
            // ๋งŒ์•ฝ ํ•ด๋‹น ์ฝ”์ธ ๊ฐ€์น˜๊ฐ€ ๋งŒ๋“ค์–ด์•ผ๋˜๋Š” ๊ธˆ์•ก๋ณด๋‹ค ์ž‘๋‹ค๋ฉด
            if(coins[i] <= K){
                // ๋‚จ์€ ๋งŒ๋“ค์–ด์•ผ๋˜๋Š” ๊ธˆ์•ก์„ ์ฝ”์ธ ๊ฐ€์น˜๋กœ ๋‚˜๋ˆˆ ๋ชซ์„
                // ์ฝ”์ธ ๊ฐœ์ˆ˜์— ๋”ํ•จ
                cnt = cnt + (K / coins[i]);

                // ๋‚จ์€ ๊ธˆ์•ก์„ ํ•ด๋‹น ์ฝ”์ธ ๊ฐ€์น˜๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋กœ ๊ฐฑ์‹ ํ•จ
                K = K % coins[i];
            }

            // ๋งŒ์•ฝ ๋‚จ์€ ๊ธˆ์•ก์ด 0์ด ๋˜๋ฉด ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ
            if(K == 0){
                break;
            }
        }

        System.out.println(cnt);
    }
}