๊ด€๋ฆฌ ๋ฉ”๋‰ด

Binary Journey

[ํ…Œ์ฝ”ํ…Œ์ฝ”1.5 4-07] ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ ๋ณธ๋ฌธ

Algorithm/ํ…Œ์ฝ”ํ…Œ์ฝ”1.5(2025)

[ํ…Œ์ฝ”ํ…Œ์ฝ”1.5 4-07] ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ

binaryJournalist 2025. 2. 21. 14:08
๋ฐ˜์‘ํ˜•
๐Ÿ’กํ…Œ์ฝ”ํ…Œ์ฝ” ์‹œ์ฆŒ 1.5 4ํšŒ ๋ชจ์ž„ on-site ๋ฌธ์ œ ํ’€์ด์ž…๋‹ˆ๋‹ค. (2025.02.15)

 

๋ฌธ์ œ

์ถœ์ฒ˜: ๋ฐฑ์ค€ - ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ

 

๋‚ด์šฉ

 

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

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

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

 

๊ธฐ๋กํ•˜๊ธฐ

๐Ÿ’ก ์–ด๋””๊นŒ์ง€ ์ƒ๊ฐํ•ด๋ดค๋Š”์ง€ ๋‹จ๊ณ„์ ์œผ๋กœ ๊ธฐ๋กํ•ด๋ด…๋‹ˆ๋‹ค.

์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜๋ ค ํ–ˆ๋‚˜์š”?

์›ํ˜• ํ๋ฅผ ์ ์šฉํ•œ๋‹ค.

์ ์šฉ ๊ทผ๊ฑฐ๋Š” ๋ฌด์—‡์ธ๊ฐ€?

"์›์„ ์ด๋ฃจ๋ฉด์„œ ์•‰์•„์žˆ๋‹ค."

๋ฌธ์ œ ํ’€์ด ๊ณผ์ •์—์„œ ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋ ค ํ–ˆ๋‚˜์š”?

๋ชจ๋“ˆ๋Ÿฌ ์—ฐ์‚ฐ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  deque, enque๋ฅผ ํ™œ์šฉํ•œ๋‹ค.

 

ํ’€์ด

ํ’€์ด ์‹œ๊ฐ„

์‹œ์ž‘ ์‹œ๊ฐ ์ข…๋ฃŒ ์‹œ๊ฐ ์ด ์†Œ์š” ์‹œ๊ฐ„
    15๋ถ„

 

๋ฌธ์ œ ๋ถ„์„

์ œ์•ฝ ์‚ฌํ•ญ ํŒŒ์•… & ์ž…๋ ฅ๊ฐ’ ๋ถ„์„

๐Ÿ’ก ์ž…๋ ฅ๊ฐ’์„ ๋ถ„์„ํ•˜๋ฉด ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ„์ ‘์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…๋ ฅ

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

์ถœ๋ ฅ

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

 

์˜ˆ์ œ ์ž…๋ ฅ1
7 3
์˜ˆ์ œ ์ถœ๋ ฅ1
<3, 6, 2, 7, 5, 1, 4>

 

 

์˜์‚ฌ ์ฝ”๋“œ ์ž‘์„ฑ

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋Š” ๋™์ž‘ ์ค‘์‹ฌ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ์ˆœ์„œ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋ฅผ ์ถฉ๋ถ„ํžˆ ํ…Œ์ŠคํŠธํ•ด๋ด…๋‹ˆ๋‹ค.

solution(n, k) {
    // 1234567 -> 456712 -> 71245 -> 4571 -> 145
    // enque, deque ํ™œ์šฉ
    // k๋ฒˆ์งธ ์ˆ˜๋Š” deque๋งŒ ๊ทธ ์™ธ๋Š” deque ํ›„ enque
}

 

 

๊ตฌํ˜„

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(bufferedReader.readLine(), " ");
        StringBuilder answer = new StringBuilder("<");

        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());

        ArrayDeque<Integer> queue = new ArrayDeque<>();
        for (int i = 0; i < n; i++) {
            queue.add(i + 1);
        }

        // 1234567 -> 456712 -> 71245 -> 4571 -> 145
        int count = 1;
        int front;
        while (!queue.isEmpty()) {
            front = queue.poll();
            if (count == k) {
                answer.append(front);
                if (!queue.isEmpty()) {
                    answer.append(", ");
                }
                count = 1;
                continue;
            }
            queue.add(front);
            count++;
        }

        answer.append(">");
        System.out.println(answer);
    }
}
๋ฐ˜์‘ํ˜•