๋ฐฑ์ค 11866 ์์ธํธ์ค With Queue of JAVA
https://www.acmicpc.net/problem/11866
11866๋ฒ: ์์ธํธ์ค ๋ฌธ์ 0
์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์์๋๋ก ์ฃผ์ด์ง๋ค. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import java.util.Scanner; import java.util.LinkedList; import java.util.Queue; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); Queue<Integer> q = new LinkedList<>(); int N = in.nextInt(); int K = in.nextInt(); for(int i = 1; i <= N; i++) { q.add(i); } StringBuilder sb = new StringBuilder(); sb.append('<'); while(q.size() > 1) { for(int i = 0; i < K - 1; i++) { int val = q.poll(); q.offer(val); } sb.append(q.poll()).append(", "); } sb.append(q.poll()).append('>'); System.out.println(sb); } } | cs |
๋จผ์ ์ด๋ฒ์๋ ์ค์บ๋๋ฅผ ํตํด ๋ง๋ค์ด๋ณด๋๋ก ํ๊ฒ ๋ค. ์ค์บ๋์ ํ๋ฅผ ํ๋์ฉ ์ ์ธํด์ค๋ค. ํ๋ ์คํ๊ณผ ๋ค๋ฅด๊ฒ ์ ์ ์ ์ถ ๋ฐฉ์์ผ๋ก ์ ์ผ ๋จผ์ ๋ค์ด์จ ๊ฒ์ด ์ ์ผ ๋จผ์ ๋๊ฐ๋ ํํ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๊ทธ ๋ค์ ์ค์บ๋๋ฅผ ํตํด์ N๋ช ์ ์ฌ๋๊ณผ ์ ๊ฑฐํ ์ฌ๋์ ๋ฒํธ์ธ K๋ฅผ ์ ๋ ฅ ๋ฐ๋๋ค.
for๋ฌธ์ ์ฌ๋ ์๋งํผ ๋๋ฉด์ ํ์ N๋งํผ์ ์ซ์๋ฅผ ์ ๋ ฅํ๋ค. ๊ทธ ๋ค์ StringBuider๋ฅผ ํ๋ ์ ์ธํด์ค๋ค.
๊ทธ ๋ค์ sb์ '<'๋ฅผ ์ถ๊ฐํด์ค๋ค. ์๋๋ฉด ์ด๊ฒ๋ ์ถ๋ ฅ์ ํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ ๋ค์ ํฌ์ธํธ๋ก ๋ค์ด๊ฐ ๋ณด๊ฒ ๋ค.
1 2 3 4 5 6 7 8 9 10 | while(q.size() > 1) { for(int i = 0; i < K - 1; i++) { int val = q.poll(); q.offer(val); } sb.append(q.poll()).append(", "); } | cs |
์ด ๋ถ๋ถ์ q์ ์์๊ฐ 2๊ฐ ์ด์์ด๋ฉด ์๋ํ๊ฒ ๋์ด ์๋ค. ๊ทธ ๋ค์ for๋ฌธ์ ๋๋ฉด์ 0๋ถํฐ K -1๋ฒ๊น์ง ๋ฐ๋ณต์ ํ๋ค.
์ด๊ฒ ๋ฌด์จ ์ฝ๋๋๋ฉด ์ผ๋จ for๋ฌธ์ ํ์ ๋งจ ์์ ์๋ ๋ฒํธ๋ค์ ์ผ๋จ ๋ค๋ก ์ด๋์ํจ๋ค. ํ ๊ตฌ์กฐ์ ๋งจ ์์ ์๋ ๊ฒ์ ์ญ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ ๋ค์ ๊ทธ ๊ณผ์ ์ด ์๋ฃ๊ฐ ๋๋ฉด ๋ค์ ํ์์ ๋งจ ์์์๋ ์ซ์๋ฅผ ๋ฝ์์ ์ฐ๋ฆฌ๊ฐ ์ถ๋ ฅํ sb์ ์ถ๊ฐํด์ค๋ค.์ฌ์ด์ฌ์ด๊ฐ ","๋ก ๋๋์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ๋ ์ถ๊ฐํด์ค๋ค. ๊ทธ ๋ค์ ๊ดํธ๋ฅผ ์คํธ๋ง ๋น๋์ ๋ฃ์ด์ฃผ๊ณ ๊ทธ๊ฒ์ ์ถ๋ ฅํ๋ฉด ๋๋ค.
round 1
loop 1 : {1, 2, 3, 4, 5, 6, 7} → {2, 3, 4, 5, 6, 7, 1}
loop 2 : {2, 3, 4, 5, 6, 7, 1} → {3, 4, 5, 6, 7, 1, 2}
loop 3 : {3, 4, 5, 6, 7, 1, 2} → 3 ์ถ๋ ฅ
round 2
loop 1 : {4, 5, 6, 7, 1, 2} → {5, 6, 7, 1, 2, 4}
loop 2 : {5, 6, 7, 1, 2, 4} → {6, 7, 1, 2, 4, 5}
loop 3 : {6, 7, 1, 2, 4, 5} → 6 ์ถ๋ ฅ
round 3
loop 1 : {7, 1, 2, 4, 5} → {1, 2, 4, 5, 7}
loop 2 : {1, 2, 4, 5, 7} → {2, 4, 5, 7, 1}
loop 3 : {2, 4, 5, 7, 1} → 2 ์ถ๋ ฅ
round 4
loop 1 : {4, 5, 7, 1} → {5, 7, 1, 4}
loop 2 : {5, 7, 1, 4} → {7, 1, 4, 5}
loop 3 : {7, 1, 4, 5} → 7 ์ถ๋ ฅ
round 5
loop 1 : {1, 4, 5} → {4, 5, 1}
loop 2 : {4, 5, 1} → {5, 1, 4}
loop 3 : {5, 1, 4} → 5 ์ถ๋ ฅ
round 6
loop 1 : {1, 4} → {4, 1}
loop 2 : {4, 1} → {1, 4}
loop 3 : {1, 4} → 1 ์ถ๋ ฅ
round 7
loop 1 : {4} → {4}
loop 2 : {4} → {4}
loop 3 : {4} → 4 ์ถ๋ ฅ
์ด๋ฐ ํํ๋ก ์๋ํ๋ ๊ฒ์ด๋ค.