알고리즘 풀이(JAVA) - 백준 알고리즘_11866(조세퍼스 문제O)


문제

문제 링크 : 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());
	}
}

Back to blog