1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [D3_1869] ์ง„๊ธฐ์˜ ์ตœ๊ณ ๊ธ‰ ๋ถ•์–ด๋นต

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;

public class Solution {
    static StringTokenizer st;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        // ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜
        int T = Integer.parseInt(br.readLine());

        for(int t = 1; t<=T; t++) {
            sb.append("#").append(t).append(" ");
            st = new StringTokenizer(br.readLine(), " ");
            // ์‚ฌ๋žŒ์ˆ˜
            int N = Integer.parseInt(st.nextToken());

            // ์ดˆ
            int M = Integer.parseInt(st.nextToken());

            // ๋ถ•์–ด๋นต ๊ฐœ์ˆ˜
            int K = Integer.parseInt(st.nextToken());

            ArrayList<Integer> list = new ArrayList<>();

            st = new StringTokenizer(br.readLine(), " ");
            for (int i = 0; i < N; i++) {
                // ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
                list.add(Integer.parseInt(st.nextToken()));
            }
            // ์ •๋ ฌ
            Collections.sort(list);

            // ๋ถ•์–ด๋นต ์ˆ˜
            int cnt =0;

            int idx = 0;
            String res = "";
            // i๋Š” ์‹œ๊ฐ„์„ ์˜๋ฏธ
            for(int i = 1; i<=list.get(list.size()-1); i++) {
                if (i % M == 0) {
                    cnt += K;
                }
                if (list.get(idx) == i) {
                    if (cnt == 0) {
                        res = "Impossible";
                        break;
                    }
                    else{
                        res = "Possible";
                        cnt--;
                    }
                    idx++;
                }
            }

            if(res.equals("")){
                res = "Impossible";
            }

            sb.append(res).append("\n");
        }
        System.out.println(sb);
    }
}

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

์ฒ˜์Œ ๋ฌธ์ œ๋ฅผ ๋ดค์„ ๋•Œ ๊ฐ„๋‹จํ•ด ๋ณด์˜€๋Š”๋ฐ ํ•ด์ค˜์•ผ ํ•˜๋Š” ์กฐ๊ฑด๋“ค์ด ์€๊ทผํžˆ ๋งŽ์•˜๋‹ค.
ArrayList๋กœ ์‚ฌ๋žŒ์ด ์˜ค๋Š” ์‹œ๊ฐ„์„ ๋ฐ›์•„ ์ •๋ ฌํ•˜์—ฌ ์ œ์ผ ๋Šฆ๊ฒŒ ์˜ค๋Š” ์‚ฌ๋žŒ์˜ ์‹œ๊ฐ„๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋ฉฐ ๋ถ•์–ด๋นต์„ ํ™•์ธํ•œ๋‹ค.
๋งŒ์•ฝ M์ดˆ๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด ๋ถ•์–ด๋นต์„ K๊ฐœ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์‚ฌ๋žŒ์ด ์˜ค๋Š” ์‹œ๊ฐ„์ด ๋˜์—ˆ๋‹ค๋ฉด ๋ถ•์–ด๋นต์„ ํ•˜๋‚˜ ๋นผ์คฌ๋‹ค.
๊ฑฐ๊ธฐ์—์„œ ๋งŒ์•ฝ ๋ถ•์–ด๋นต์„ ๋นผ์ค˜์•ผํ•˜๋Š”๋ฐ ๋ถ•์–ด๋นต ๊ฐœ์ˆ˜๊ฐ€ 0๊ฐœ๋ผ๋ฉด โ€˜Impossibleโ€™์„ ์ถœ๋ ฅํ•˜๊ณ ,
๋ถ•์–ด๋นต์„ ์‹œ๊ฐ„์— ๋งž์ถฐ ๋‹ค ์ค„ ์ˆ˜ ์žˆ์œผ๋ฉด โ€˜Possibleโ€™์„ ์ถœ๋ ฅํ–ˆ๋‹ค.
Possible์„ ์ถœ๋ ฅํ•˜๊ณ  ๋ถ•์–ด๋นต์„ ํ•˜๋‚˜ ๋นผ์ค˜์•ผํ•˜๋Š”๋ฐ ๊ทธ๊ฒƒ์„ ๋ชปํ•ด์„œ ์ข€ ํ—ค๋งธ๋˜ ๋ฌธ์ œ์ด๋‹ค..