[백준] 요세푸스 문제 0 11866번
나의 풀이
public class Josephus {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String[] s = br.readLine().split(" ");
int N = Integer.parseInt(s[0]);
int K = Integer.parseInt(s[1]);
Deque<Integer> queue = new LinkedList<>();
for(int i = 1; i < N + 1; i++) {
queue.add(i);
}
sb.append("<");
for(int i = 0; i < N; i++) {
int count = 1;
while(count != K) {
queue.add(queue.poll());
count++;
}
if(i == N - 1) {
sb.append(queue.poll()).append(">");
} else {
sb.append(queue.poll()).append(", ");
}
}
System.out.println(sb);
}
}
- 1부터 N까지 큐를 채워준다.
- 1부터 K가 될때까지 K 앞 인덱스의 수들을 뒤로 넣어준다.
- ex)
K = 3, count = 1
2 3 4 5 1 (count == 2)
3 4 5 1 2 (count == 3)
- 이렇게 큐를 원형으로 연결해주고 맨 앞의 숫자를 빼서 StringBuilder 에 추가해주는 과정을 N번 반복해주면 된다.