자바/백준
[백준 11866] 요세푸스 문제 0
슈슈버거
2022. 11. 24. 16:42
문제
https://www.acmicpc.net/problem/11866
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
내가 작성한 코드
import javax.print.DocFlavor;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class qor11866 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int num = Integer.parseInt(st.nextToken());
int time = Integer.parseInt(st.nextToken());
ArrayList<Integer> people = new ArrayList<>();
HashSet<Integer> choice = new HashSet<>();
ArrayList<Integer> pre = new ArrayList<>();
bw.write("<");
for(int i = 1; i<=num; i++){
people.add(i);
pre.add(i);
}
int index = time-1;
int now = people.get(index);
choice.add(now);
people.remove(index);
pre.remove(pre.indexOf(now));
index += time-1;
String result = "";
result += now+"";
while(!pre.isEmpty()){
while(index >= people.size()){
people.addAll(pre);
}
now = people.get(index);
if(choice.contains(now)){
break;
}
choice.add(now);
people.remove(index);
pre.remove(pre.indexOf(now));
index += time-1;
result += ", "+now;
}
result = result.trim();
bw.write(result+">");
bw.close();
}
}