백준_11866번_요세푸스 문제 0_자바
https://www.acmicpc.net/problem/11866
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
요세푸스문제는 코테에서 자주 등장하는 문제이며, Queue를 이용하면 쉽게 풀어낼 수 있다.
출력의 경우 아래와 같이 바로바로 찍어낼 수도 있고, Stringbuilder를 사용해도 괜찮을 것 같다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
Queue<Integer> q = new LinkedList<>();
for (int i = 0; i < n; i++) {
q.add(i+1);
}
System.out.print("<");
int i =1;
while (q.size()>1){
int re = q.poll();
if(i%m==0){
System.out.print(re+", ");
}else {
q.add(re);
}
i++;
}
System.out.print(q.poll()+">");
}
}