[BOJ 1158] 요세푸스 문제 (java)
문제 링크 https://www.acmicpc.net/problem/1158
문제풀이
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