끄적여본 풀이
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class 요세푸스문제 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
StringBuilder sb = new StringBuilder();
sb.append("<");
Queue<Integer> queue = new LinkedList<>();
for(int i=1;i<=n;i++){
queue.offer(i);
}
int cnt = 0;
while(queue.size()!=1){
int data = queue.poll();
cnt++;
if(cnt%k == 0){
sb.append(data).append(", ");
}else queue.add(data);
}
sb.append(queue.poll()).append(">");
System.out.println(sb);
}
}
import java.io.*;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
import java.util.stream.IntStream;
public class 요세푸스문제_1 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Queue<Integer> q = new LinkedList<>();
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
for (int i = 1; i <= N; i++) {
q.add(i);
}
StringBuilder sb = new StringBuilder();
sb.append('<');
/*
* 마지막 부분의 출력은 > 괄호 전에 공백이 없기 때문에
* 일괄적으로 출력하기 위해 마지막 원소만 남겨질 때까지만
* 반복하고 마지막 원소는 그대로 출력한다.
*/
while (q.size() > 1) {
for (int i = 0; i < K - 1; i++) {
q.offer(q.poll());
}
sb.append(q.poll()).append(", ");
}
// 마지막 원소 출력한 뒤 > 도 붙여준다.
sb.append(q.poll()).append('>');
System.out.println(sb);
}
}