백준

[백준]11866: 요세푸스 문제, 큐 정리

새우는 맛있새우 2025. 1. 20. 14:56

이번 시간에는 큐를 정리해보겠습니다.


https://kwin0825.tistory.com/157

 

[JAVA / 자바] Queue(큐) 클래스 사용법 및 함수(Method) 정리

Queue : 선입 선출(FIFO: First In First Out)의 성격을 지닌 자료구조 [자료구조] 큐(Queue)에 대한 설명글 [자료구조] 큐(Queue) 큐 (Queue) - 스택과 마찬가지로 삽입과 삭제의 위치가 제한된 유한 순서 리스트

kwin0825.tistory.com

알고있어햐 하는 메서드는?

offer, poll,peek,isEmpty!

이제 거의 다 비슷비슷한 느낌이군


정답 코드

package que;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class Q3 {
    public static void main(String[] args) throws IOException {
        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());
        Queue<Integer> queue = new LinkedList<>();
        Queue<Integer> queueFinal = new LinkedList<>();
        for (int i = 1; i <= N; i++) {
            queue.offer(i);
        }
        int cnt = 1;

        while (!queue.isEmpty()) {
            if (cnt < K) {
                queue.offer(queue.poll());
                cnt++;
            } else {
                queueFinal.offer(queue.poll());
                cnt = 1;
            }
        }

        StringBuilder sb = new StringBuilder();
        sb.append("<").append(queueFinal.poll());
        for (Integer i : queueFinal) {
            sb.append(", ").append(i);
        }
        sb.append(">");
        System.out.println(sb);
    }
}

 

 

queue에다가 자연수를 1부터 순서대로 저장을 해주고

queue가 비어있기 전까지 

cnt를 세준다.

 

cnt는 K가 될때, queue 헤드에 있는 값을queue파이널에다가 값을 넣어줘야하므로

 

poll한거를 뒤에 offer.

K번째가 되었음 poll한거를 파이널에 대입

 

간단하지만 연습하기 좋은 문제였따.