알고리즘/구현
자바 | 백준 | 11866 | 요세푸스 문제 0 | LinkedList
cha-n
2021. 2. 5. 23:51
Solution
삭제가 계속 이루어짐 --> LinkedList 이용
// 11866, 요세푸스 문제 0
package BOJ;
import java.io.*;
import java.util.*;
public class BOJ_11866 {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
LinkedList<Integer> list = new LinkedList<>(); // 연결 리스트
for (int i=0;i<N;i++) {
list.add(i+1);
}
bw.write("<");
int idx = 0;
while (list.size()>1) {
idx += (K-1); // -1: remove
idx %= list.size(); // idx >= list.size() --> index error
bw.write(list.remove(idx)+", ");
}
bw.write(list.get(0)+">");
bw.flush();
}
}
문제 출처 www.acmicpc.net/problem/11866
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net