[백준] 요세푸스 문제 0 11866번 - Java

GOSHK·2022년 2월 7일
0

[백준] Java

목록 보기
15/49
post-thumbnail

[백준] 요세푸스 문제 0 11866번

나의 풀이

public class Josephus {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        String[] s = br.readLine().split(" ");
        int N = Integer.parseInt(s[0]);
        int K = Integer.parseInt(s[1]);
        Deque<Integer> queue = new LinkedList<>();

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

        sb.append("<");
        for(int i = 0; i < N; i++) {
            int count = 1;
            while(count != K) {
                queue.add(queue.poll());
                count++;
            }
            if(i == N - 1) {
                sb.append(queue.poll()).append(">");
            } else {
                sb.append(queue.poll()).append(", ");
            }
        }

        System.out.println(sb);
    }
}
  • 1부터 N까지 큐를 채워준다.
  • 1부터 K가 될때까지 K 앞 인덱스의 수들을 뒤로 넣어준다.
  • ex)
    K = 3, count = 1
    2 3 4 5 1 (count == 2)
    3 4 5 1 2 (count == 3)
  • 이렇게 큐를 원형으로 연결해주고 맨 앞의 숫자를 빼서 StringBuilder 에 추가해주는 과정을 N번 반복해주면 된다.

0개의 댓글