🏅Algorithm/Baekjoon
[백준] 1158번 요세푸스 문제 자바(Java)
coco3o
2022. 3. 14. 17:59
반응형
https://www.acmicpc.net/problem/1158
정답 코드
import java.io.*;
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 k = Integer.parseInt(st.nextToken());
Queue<Integer> q = new LinkedList<>();
// 1번부터 N번까지 N명의 사람
for (int i = 1; i <= n; i++) {
q.offer(i);
}
StringBuilder sb = new StringBuilder();
sb.append("<");
// k-1까지 처음에 있던 값을 맨 뒤로 보낸다.
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);
}
}
설명
입력 : 7 3
7 6 5 4 3 2 1
k -1 = 2
2 1 7 6 5 4 3
<3,
2 1 7 6 5 4
k -1 = 2
5 4 2 1 7 6
<3, 6,
5 4 2 1 7
k -1 = 2
1 7 5 4 2
<3, 6, 2,
1 7 5 4
k-1 = 2
5 4 1 7
<3, 6, 2, 7
5 4 1
k - 1 = 2
4 1 5
<3, 6, 2, 7, 5,
4 1
1 4
<3, 6, 2, 7, 5, 1, 4>
반응형