https://www.acmicpc.net/problem/1158
1. 아이디어
큐 자료구조를 활용하면 원순열에서 특정 순서의 사람을 간단하게 제거할 수 있다.
2. 문제풀이
enqueue 값에 dequeue값을 넣으면 계속 순열을 원형으로 돌 수 있는 점을 활용했다.
모든 사람이 제거될 때까지 제거할 순번이 아닌 사람은 큐의 뒤에 넣고 제거할 사람은 따로 빼는 과정을 반복하면 로직을 구성할 수 있고 출력 양식을 맞추기 위해 StringBuilder를 활용했다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
Queue<Integer> q = new ArrayDeque<>();
for (int i = 1; i <= N; i++) {
q.offer(i);
}
sb.append("<");
while (!q.isEmpty()) {
for (int i = 1; i < K; i++) {
q.offer(q.poll());
}
sb.append(q.poll());
if (!q.isEmpty()) sb.append(", ");
}
sb.append(">");
bw.write(sb.toString());
bw.flush();
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 2753번 - 윤년 [Java] (0) | 2024.12.12 |
---|---|
[백준] 8393번 - 합 [Java] (0) | 2024.12.12 |
[백준] 11866번 - 요세푸스 문제 0 [Java] (0) | 2024.12.12 |
[백준] 11721번 - 열 개씩 끊어 출력하기 [Java] (1) | 2024.12.10 |
[백준] 14645번 - 와이버스 부릉부릉 [Java] (1) | 2024.12.10 |