[BOJ Baekjun]-ジョセフ問題011866 Java
📌 問題の説明
n人が順番に座っている.△誰もが番号札を持っています.
k番目の人を選んで、彼が持っている番号表を印刷します.
すべての人を選ぶまで繰り返す.
Queueで解いた
poll() -> offer()
package com.example.boj;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.*;
public class Q11866 {
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<>();
for (int i=1;i<=n;i++) {
queue.add(i);
}
StringBuilder sb = new StringBuilder("<");
while (queue.size() > 1) {
// k-1번 앞에서 뽑아서 뒤로 넣는 작업 반복 (poll -> offer)
for(int i=0;i<k-1;i++) {
int tmp = queue.poll();
queue.offer(tmp);
}
// k번째 사람 출력 (StringBuilder에 추가)
sb.append(queue.poll() + ", ");
}
// 큐에 남은 마지막사람을 출력
sb.append(queue.poll());
sb.append(">");
System.out.println(sb.toString());
}
}
Reference
この問題について([BOJ Baekjun]-ジョセフ問題011866 Java), 我々は、より多くの情報をここで見つけました https://velog.io/@dhk22/BOJ-백준-요세푸스-문제0-11866-Javaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol