1158๋ฒ ์์ธํธ์ค ๋ฌธ์
๋ฌธ์
์์ธํธ์ค ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
1๋ฒ๋ถํฐ N๋ฒ๊น์ง N๋ช ์ ์ฌ๋์ด ์์ ์ด๋ฃจ๋ฉด์ ์์์๊ณ , ์์ ์ ์ K(≤ N)๊ฐ ์ฃผ์ด์ง๋ค. ์ด์ ์์๋๋ก K๋ฒ์งธ ์ฌ๋์ ์ ๊ฑฐํ๋ค. ํ ์ฌ๋์ด ์ ๊ฑฐ๋๋ฉด ๋จ์ ์ฌ๋๋ค๋ก ์ด๋ฃจ์ด์ง ์์ ๋ฐ๋ผ ์ด ๊ณผ์ ์ ๊ณ์ํด ๋๊ฐ๋ค. ์ด ๊ณผ์ ์ N๋ช ์ ์ฌ๋์ด ๋ชจ๋ ์ ๊ฑฐ๋ ๋๊น์ง ๊ณ์๋๋ค. ์์์ ์ฌ๋๋ค์ด ์ ๊ฑฐ๋๋ ์์๋ฅผ (N, K)-์์ธํธ์ค ์์ด์ด๋ผ๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด (7, 3)-์์ธํธ์ค ์์ด์ <3, 6, 2, 7, 5, 1, 4>์ด๋ค.
N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ฉด (N, K)-์์ธํธ์ค ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์์๋๋ก ์ฃผ์ด์ง๋ค. (1 ≤ K ≤ N ≤ 5,000)
์ถ๋ ฅ
์์ ์ ๊ฐ์ด ์์ธํธ์ค ์์ด์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
7 3
์์ ์ถ๋ ฅ 1
<3, 6, 2, 7, 5, 1, 4>
https://www.acmicpc.net/problem/1158
Queue๋ฅผ ์ด์ฉํด์ ํ๋ฉด ๊ฐ๋จํ ๋ฌธ์ ์๋ ๊ฒ ๊ฐ๋ค.
K๋ฒ์งธ ์ฌ๋ ์์๋ก ์ ๊ฑฐํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋จผ์ K-1๋ฒ์งธ ์ฌ๋๊น์ง,
poll()์ ํ ๊ฐ์ offer()๋ฅผ ํตํด Queue์ ๋ค์ ์ฝ์ ํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
K๋ฒ์งธ ์ฌ๋์ผ ๊ฒฝ์ฐ poll()์ ํตํด ์ ๊ฑฐํ๋ฉฐ StringBuilder๋ฅผ ์ด์ฉํด ๋ฌธ์์ด์ ๋ํด๋๊ฐ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ค.
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<Integer>();
StringBuilder sb = new StringBuilder();
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
sb.append("<");
for (int i = 1; i < N + 1; i++) {
queue.offer(i);
}
while (queue.size() != 1) {
for (int i = 0; i < K - 1; i++) {
queue.offer(queue.poll());
}
sb.append(queue.poll()).append(", ");
}
sb.append(queue.poll()).append(">");
System.out.println(sb.toString());
}
}
๋ ๐ง
๋๊ธ