Algorithm๐Ÿฅ‡

1158.์š”์„ธํ‘ธ์Šค๋ฌธ์ œ

hae02y 2023. 10. 16. 08:18
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ N๋ช…์˜ ์‚ฌ๋žŒ์ด ์›์„ ์ด๋ฃจ๋ฉด์„œ ์•‰์•„์žˆ๊ณ , ์–‘์˜ ์ •์ˆ˜ K(≤ N)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด์ œ ์ˆœ์„œ๋Œ€๋กœ K๋ฒˆ์งธ ์‚ฌ๋žŒ์„ ์ œ๊ฑฐํ•œ๋‹ค. ํ•œ ์‚ฌ๋žŒ์ด ์ œ๊ฑฐ๋˜๋ฉด ๋‚จ์€ ์‚ฌ๋žŒ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ์›์„ ๋”ฐ๋ผ ์ด ๊ณผ์ •์„ ๊ณ„์†ํ•ด ๋‚˜๊ฐ„๋‹ค. ์ด ๊ณผ์ •์€ N๋ช…์˜ ์‚ฌ๋žŒ์ด ๋ชจ๋‘ ์ œ๊ฑฐ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†๋œ๋‹ค. ์›์—์„œ ์‚ฌ๋žŒ๋“ค์ด ์ œ๊ฑฐ๋˜๋Š” ์ˆœ์„œ๋ฅผ (N, K)-์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์ด๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด (7, 3)-์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์€ <3, 6, 2, 7, 5, 1, 4>์ด๋‹ค.

N๊ณผ K๊ฐ€ ์ฃผ์–ด์ง€๋ฉด (N, K)-์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ K ≤ N ≤ 5,000)

์ถœ๋ ฅ

์˜ˆ์ œ์™€ ๊ฐ™์ด ์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.

์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ œ์ถœ ์ •๋‹ต ๋งžํžŒ ์‚ฌ๋žŒ ์ •๋‹ต ๋น„์œจ
2 ์ดˆ 256 MB 98841 49267 34696 48.684%

https://www.acmicpc.net/problem/1158

ํ’€์ด

์„ค๋ช…

์š”์„ธํ‘ธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜

์„ค๋ช…์„ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ์š”์„ธํ‘ธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ง‘๋‹จ ์ž์‚ด์„ ํ•˜๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค... ๋œ๋œ


๋ฐฑ์ค€์˜ ์„ค๋ช…์œผ๋กœ ์ดํ•ดํ•˜๋Š”๊ฒŒ ์ข€ ์–ด๋ ค์› ๋Š”๋ฐ ๋งŒ์•ฝ (7,3) ์ด๋ผ๋ฉด 7๋ช…์ค‘์— 3๋ฒˆ์งธ๋ฅผ ์ง€์†์ ์œผ๋กœ ์ œ์™ธํ•ด ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์„ ํ’€๋•Œ ํ๋กœ ํ’€๋ฉด ์‰ฝ๊ฒŒ ํ’€๋ฆด๊ฒƒ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

์ฝ”๋“œ

public class Main {

    /*
    1~N ๋ช…์˜ ์‚ฌ๋žŒ์ด ์›์œผ๋กœ ์•‰์Œ
    K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. K๋ฒˆ์จฐ ์‚ฌ๋žŒ์„ ์ˆœ์„œ๋Œ€๋กœ ์ œ๊ฑฐํ•œ๋‹ค.

    ํ•œ์‚ฌ๋žŒ์ด ์ œ๊ฑฐ๋˜๋ฉด ๋‚จ์€์‚ฌ๋žŒ์œผ๋กœ N๋ช…์ด ๋ชจ๋‘ ์ œ๊ฑฐ๋ ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•œ๋‹ค.
     */

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        int K = sc.nextInt();

        //Queue ์„ ์–ธ
        Queue<Integer> queue = new LinkedList<>();

        for(int i=1; i<=N; i++){
            queue.offer(i);
        }

        int count = 0;
        String result = "<";

        //queue๊ฐ€ ๋นŒ๋•Œ ๊นŒ์ง€
        while (!queue.isEmpty()){
            count++;
            //์นด์šดํŠธ๊ฐ€ ์ฃผ์–ด์ง„ K์˜ ์ˆ˜์™€ ๊ฐ™์„ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ๊ฐ’์— ์ถ”๊ฐ€ํ•˜๊ณ  ์นด์šดํŠธ๋ฅผ ์ดˆ๊ธฐํ™”
            if(count == K){
                result += queue.poll() + ", ";
                count = 0;
            }else { //count != K ์ธ๊ฒฝ์šฐ์—๋Š” pollํ•œ ๊ฐ’์„ ๋‹ค์‹œ queue์— ์ถ”๊ฐ€ํ•œ๋‹ค.
                queue.offer(queue.poll());
            }
        }

        result = result.substring(0, result.length()-2);
        result += ">";


        System.out.println(result);
    }
}
๋ฐ˜์‘ํ˜•