알고리즘 풀이(JAVA) - 백준 알고리즘_11866(조세퍼스 문제O)
By on November 3, 2019
문제
문제 링크 : https://www.acmicpc.net/problem/11866
풀이
- 두개의 큐를 생성하여 풀이 진행
- K 번째 의 수를 queue에서 빼서 rQueue 로 이동 시키면서 반복 처리.
소스
- 조세퍼스(11866)
public class Baekjoon_11866 {
public static Queue<Integer> queue = new LinkedList<>();
public static Queue<Integer> rQueue = new LinkedList<>();
public static void main(String[] args) throws IOException {
BufferedReader reader =new BufferedReader(new InputStreamReader(System.in));
String[] inputStr = reader.readLine().split(" ");
int N = Integer.parseInt(inputStr[0]);
int K = Integer.parseInt(inputStr[1]);
for(int i = 1; i <= N; i++) {
queue.add(i);
}
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= K; j++) {
if(j % K == 0) {
rQueue.add(queue.poll());
}else {
queue.add(queue.poll());
}
}
}
//출력 문자열 생성
printResult(N);
}
private static void printResult(int N) {
StringBuilder sb = new StringBuilder();
sb.append("<");
for(int i = 1; i <= N; i++) {
sb.append(rQueue.poll());
if(i != N) {
sb.append(", ");
}
}
sb.append(">");
System.out.println(sb.toString());
}
}