728x90

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

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

 

 

풀이)

import java.util.ArrayDeque;
import java.util.Queue;
import java.util.Scanner;

public class Main_BJ_11866_요세푸스문제0 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
        int n = sc.nextInt();
        int k = sc.nextInt();

        Queue<Integer> q = new ArrayDeque<>();
        for(int i=1; i<=n; i++)
            q.add(i);

        sb.append("<");
        while(q.size()>1){
            for(int i=0; i<k-1; i++){
                q.add((q.poll()));
            }
            sb.append(q.poll()+", ");
        }
        sb.append(q.poll()+">");
        System.out.println(sb);
    }//main
}

오랜만에 요세푸스 문제를 풀어보았다.

queue를 이용하면 많이 편리하다!

poll과 동시에 add(offer)를 하면 편리하고, 순서에 맞을 때만 poll해주면 된다.

문제에 맞게만 잘 했다면 쉬운 문제!

728x90

'코테 > 백준' 카테고리의 다른 글

백준 11727 2xn 타일링 2(JAVA)  (0) 2023.02.01
백준 2178 미로 탐색(JAVA)  (0) 2023.01.31
백준 1181 단어정렬(JAVA)  (0) 2023.01.29
백준 11725 트리의 부모찾기(JAVA)  (0) 2023.01.29
백준 1271 엄청난 부자2(JAVA)  (0) 2023.01.28

+ Recent posts