์ฒ์์ ๋ฌธ์ ๋ฅผ ์ ์ดํด๋ชปํ์๋ ๋ฌธ์ ๋ค.
N ๋ช ์ ์ฌ๋๋ค์ K ๋ฒ์งธ ์ฌ๋์ ๊ณ์ํด์ ์ ์ธํ๋ค๊ณ ํ๋๋ฐ,
์์ ์ฒ๋ผ, 7๋ช ์ ์ฌ๋์ 3๋ฒ์งธ ์ฌ๋์ ๊ณ์ํด์ ์ ์ธํ๋ค๋ ์๋ฏธ๋
1 2 3 4 5 6 7
์ด๋ ๊ฒ ์ฌ๋์ด ์๋ค๊ณ ํ ๋,
1 2 3 4 5 6 7
1 → 2→ 3 ์ด๋ฏ๋ก
3๋ฒ์งธ ์ฌ๋์ ์ ์ธํ๋ค.
1 2 3 4 5 6 7
4 → 5 → 6 ์ด๋ฏ๋ก
๊ทธ๋ค์ 3๋ฒ์งธ์ธ 6๋ฒ์งธ ์ฌ๋์ ์ ์ธํ๊ณ
1 2 3 4 5 6 7
7 → 1 → 2 ์ด๋ฏ๋ก
๊ทธ๋ค์ 3๋ฒ์งธ์ธ 2๋ฒ์งธ ์ฌ๋์ ์ ์ธํ๊ณ
1 2 3 4 5 6 7
์ด๋ฏธ ์ ์ธ๋ ์ฌ๋์ ์์์์ ๋นผ์ผํ๋ฏ๋ก
4 → 5 → 7 ์ด ๋์ด
๊ทธ๋ค์ 3๋ฒ์งธ์ธ 7๋ฒ์งธ ์ฌ๋์ด ์ ์ธ๋์ผ ํ๋ค.
1 2 3 4 5 6 7
๊ทธ ๋ค์์ ๋ง์ฐฌ๊ฐ์ง๋ก, 1 → 4 → 5 ๊ฐ ๋์ด
5๋ฒ์งธ ์ฌ๋์ด ์ ์ธ๋์ผ ํ๊ณ
1 2 3 4 5 6 7
1 → 4 → 1
1๋ฒ์งธ ์ฌ๋์ด ์ ์ธ๋๊ณ
1 2 3 4 5 6 7
๋ง์ง๋ง์ 4๋ฒ์งธ ์ฌ๋์ด ์ ์ธ๋๋ ๊ฒ์ด๋ค.
ํ์ ์ฑ์ง์ ์ด์ฉํด์, ํ๋ ์ ์ผ ์์ ์๋ ์์๋ฅผ poll๋ก ๋นผ๋ผ ์ ์์ผ๋ฏ๋ก
K๋ฒ์งธ์ ์ํ์ง ์๋ ๊ฒฝ์ฐ poll์ ํด์ค๊ณผ ๋์์ add๋ฅผ ํด์ฃผ์ด ํ์ ๋ค์ชฝ์ ๋ฐฐ์น์ํค๊ณ
K๋ฒ์งธ์ ์ํ๋ ๊ฒฝ์ฐ poll์ ํด์ฃผ์ด ์ ๊ฑฐํ๊ณ add๋ ๋ฐ๋ก ํด์ฃผ์ง ์๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ถ๋ ฅํ ๋ < > ๊ดํธ ์์ ๋ฃ์ด์ ์ถ๋ ฅํด์ผํ๋๋ฐ, ์ด ๋ถ๋ถ ๊ตฌํํ๋๊ฒ ์๊ทผ ๊น๋ค๋ก์ ๋ค..
StringBuilder ๋ฅผ ๋ง๋ค๊ณ append ํด์ค ๋ค, ์ญ์ ํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์๋ค.
package October.Lecture.Date221014.insertion;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class No_1158 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int K = scanner.nextInt();
StringBuilder result = new StringBuilder();
Queue<Integer> queue = new LinkedList<>();
for (int i = 1; i <= N; i++) {
queue.add(i);
}
int count = 1;
result.append("<");
while (queue.size() != 0) {
if (count == K) {
result.append(queue.poll() + ", ");
count = 1;
continue;
}
++count;
queue.add(queue.poll());
}
result.append(">");
result.deleteCharAt(result.length() - 3);
result.deleteCharAt(result.length() - 2);
System.out.println(result);
}
}