https://www.acmicpc.net/problem/11866

๐Ÿ“ ํ’€์ด : ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(LinkedList)๋กœ ์›ํ˜• ํ(CircularQueue) ๊ตฌํ˜„

  • ํ•ต์‹ฌ ์ฝ”๋“œ : queue.offer(queue.poll())
  • offer()์™€ poll() ๋ฉ”์„œ๋“œ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ํ์˜ ์•ž์—์„œ ์ œ๊ฑฐํ•œ ์š”์†Œ๋ฅผ ๋‹ค์‹œ ๋’ค๋กœ ๋ณด๋‚ด๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•จ์œผ๋กœ์จ, ํ๊ฐ€ ์›ํ˜•์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
import java.io.*;
import java.util.*;
import java.util.stream.*;
public class Main {
// (N, K)-์š”์„ธํ‘ธ์Šค ์ˆœ์—ด ์ถœ๋ ฅ(์›์—์„œ ์‚ฌ๋žŒ๋“ค์ด ์ œ๊ฑฐ๋˜๋Š” ์ˆœ์„œ)
public static void main(String[] args) throws IOException {
/* [1] ์ž…๋ ฅ */
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken()); // ์‚ฌ๋žŒ์˜ ์ˆ˜ N
int K = Integer.parseInt(st.nextToken()); // ์ œ๊ฑฐ๋  ์ˆœ์„œ K
/* [2] ํ ์ƒ์„ฑ ํ›„ ๊ฐ’ ์ฑ„์šฐ๊ธฐ */
Queue<Integer> queue = new LinkedList<>();
for (int i = 1; i <= N; i++) {
queue.add(i);
}
/* [3] K๋ฒˆ์งธ ์‚ฌ๋žŒ ์ œ๊ฑฐ */
List<Integer> list = new ArrayList<>(); // ์ œ๊ฑฐ๋œ ์‚ฌ๋žŒ๋“ค ์ €์žฅ(์š”์„ธํ‘ธ์Šค ์ˆœ์—ด)
while (!queue.isEmpty()) {
for (int i = 1; i < K; i++) {
queue.offer(queue.poll()); // K๋ฒˆ์งธ ์ „๊นŒ์ง€์˜ ์‚ฌ๋žŒ๋“ค์„ ํ์˜ ๋’ค๋กœ ๋ณด๋ƒ„โญ
}
list.add(queue.poll()); // K๋ฒˆ์งธ ์‚ฌ๋žŒ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€โญ
}
/* [4] ๊ฒฐ๊ณผ ์ถœ๋ ฅ */
String str = list.stream()
.map(String::valueOf) // String ๋ณ€ํ™˜
.collect(Collectors.joining(", ")); // ","๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๊ฒฐํ•ฉ
System.out.println("<" + str + ">"); // ์ตœ์ข… ์š”์„ธํ‘ธ์Šค ์ˆœ์—ด ์ถœ๋ ฅ
}
}
yewon31