[BOJ 1158] 요세푸스 문제 (java)

less than 1 minute read

:pencil2: 문제 링크 https://www.acmicpc.net/problem/1158 :pencil2:

문제풀이


package basics_200;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;

public class BOJ1158 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		// TODO Auto-generated method stub

		Queue<Integer> queue = new LinkedList<>();

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		// N과 K를 입력 
		String[] array = br.readLine().split(" ");
		int N = Integer.parseInt(array[0]);
		int K = Integer.parseInt(array[1]);

		bw.write("<");
		
		//1~N까지 큐에 집어넣음 
		for (int i = 1; i <= N; i++) {
			queue.offer(i);
		}
		
		//큐의 사이즈 -1 만큼 반복하면서 제거 
		while (queue.size()>1) {
			for (int j = 1; j <= K; j++) {
				//K-1번째 까지는 다시 큐에 추가해주고 
				if (j != K) {
					queue.offer(queue.poll());
				}else {
					//K번째는 제거해서 순열에 넣기 
					bw.write(queue.poll().toString() + ", ");
				}
			}
		}
		
		//마지막 하나 남은건 그냥 순열에 넣어주면 됨 
		bw.write(queue.poll()+">");
		bw.flush();
		bw.close();
	}

}

Comments