Koala - 15기/코딩테스트 준비 스터디
[백준/Java] -1158번: 요세푸스문제
msms0324
2024. 8. 5. 03:54
https://www.acmicpc.net/problem/1158
K번 쨰 수가 되기 직전까지 맨 앞의 원소를 K-1 번 꺼내오고(poll) 꺼내온 원소들을 맨 뒤로 넣는다.(offer)
그리고 K번째로 뽑힌(poll) 원소는 출력하면 된다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
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));
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);
}
}