11866๋ฒ: ์์ธํธ์ค ๋ฌธ์ 0
๋ฌธ์
์์ธํธ์ค ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
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 ≤ 1,000)
์ถ๋ ฅ
์์ ์ ๊ฐ์ด ์์ธํธ์ค ์์ด์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ
7 3 // 7: N(์ฌ๋ ์), 3: K(์ ๊ฑฐํ ์์)
์์ ์ถ๋ ฅ
<3, 6, 2, 7, 5, 1, 4>
K=3์ด๋ฏ๋ก 3๋ฒ์งธ ์ฌ๋ ์ ๊ฑฐ → 3๋ฒ์งธ ์ฌ๋์์๋ถํฐ ๊ทธ๋ค์ 3๋ฒ์งธ์ ์๋ ์ฌ๋์ธ 6 ์ ๊ฑฐ → 6์์ 3๋ฒ์งธ์ ์๋ ์ฌ๋์ธ 2 ์ ๊ฑฐ → 2์์ 3๋ฒ์งธ์ ์๋ ์ฌ๋์ธ 7 ์ ๊ฑฐ (์ด๋ฏธ ์ ๊ฑฐ๋ ์ฌ๋์ ๊ฑด๋๋ฐ๊ณ ์์๋ฅผ ์ผ๋ค.) → … ๋ฐ๋ณต
๋ฌธ์ ์ ๋ฆฌ
์ ์ฒด ์ธ์(N)๊ณผ ์์ ์ ์(K)๊ฐ ์ฃผ์ด์ง๋ฉด ํ ์ฌ๋๋ง ๋จ์ ๋๊น์ง ์ฌ๋๋ค์ ์์์ ์ ๊ฑฐํ๋ ์์ ๊ตฌํ๋ ๋ฌธ์
์ ๋ ฅ
๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ๋ ๊ฐ์ ์ ์
- N : ์ฒซ ๋ฒ์งธ ์ ์, ์ด ์ธ์
- K : ๋ ๋ฒ์งธ ์ ์, ์์ ์ ์, ์ ๊ฑฐํ ์์
์ถ๋ ฅ
<> ์์ ์ผํ๋ก ๊ตฌ๋ถ๋ ์ผ๋ จ์ ์ซ์๋ก ์์ธํธ์ค ์์ด ์ธ์
์๊ตฌ ์ฌํญ
- ์ ๋ ฅ ์ ์ N ๋ฐ K ์ฝ๊ธฐ
- 1์์ N๊น์ง ๋ ์ด๋ธ์ด ์ง์ ๋ N๊ฐ์ ๋ ธ๋๊ฐ ์๋ ์ํ ์ฐ๊ฒฐ ๋ชฉ๋ก ๋ง๋ค๊ธฐ
- ๋ชฉ๋ก์ ๋ฐ๋ณตํ๊ณ ํ๋์ ๋ ธ๋๋ง ๋จ์ ๋๊น์ง ๋ชจ๋ K๋ฒ์งธ ๋ ธ๋ ์ ๊ฑฐ
- ๋ ธ๋๊ฐ ์ ๊ฑฐ๋ ์์๋๋ก ์ถ๋ ฅ
ํด๊ฒฐ ๋ฐฉ๋ฒ
- ์ ๋ ฅ์์ N๊ณผ K ์ฝ๊ธฐ
- 1๋ถํฐ N๊น์ง ๋ ์ด๋ธ์ด ์ง์ ๋ N๊ฐ์ ๋ ธ๋๋ก ์ํ ๋งํฌ ๋ฆฌ์คํธ ์ด๊ธฐํ
- ํ์ฌ ๋ ธ๋๋ฅผ ๋ ธ๋ 1๋ก ์ค์
- While ๋ชฉ๋ก์ ๋ ธ๋๊ฐ ๋ ๊ฐ ์ด์ ์๋ ๋์: a. ๋ชฉ๋ก์ ๋ฐ๋ณตํ์ฌ K๋ฒ์งธ ๋ ธ๋๋ฅผ ์ฐพ๋๋ค. b. K๋ฒ์งธ ๋ ธ๋ ์ ๊ฑฐ c. ํ์ฌ ๋ ธ๋๋ฅผ ์ ๊ฑฐํ ๋ ธ๋๋ฅผ ๋ฐ๋ก ๋ค์ ๋ ธ๋๋ก ์ค์
- print ์ ๊ฑฐ๋ ์์๋๋ก ๋ ธ๋ ์์ ์ถ๋ ฅ
→ ArrayList๋ฅผ ์ด์ฉํ์ฌ ์ํ ๋ฆฌ์คํธ๋ฅผ ๊ตฌํ
์ฝ๋
import java.util.*;
public class Main {
public static void main(String[] args) {
// N ๋ฐ K์ ๋ํ ์
๋ ฅ ๊ฐ ์ฝ๊ธฐ
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // ์ธ์ ์
int k = sc.nextInt(); // ์ ๊ฑฐ๋ ์ฌ๋์ ๋ฒํธ
// ์ ์์ ์๋ ์ฌ๋๋ค์ ๋ํ๋ด๋ ์ ์ ๋ชฉ๋ก ์ด๊ธฐํ
ArrayList<Integer> list = new ArrayList<>(); // ๋ฆฌ์คํธ ์์ฑ
for (int i = 1; i <= n; i++) {
list.add(i); // ๋ฆฌ์คํธ์ ์ธ์ ์ถ๊ฐ
}
// ์ถ๋ ฅํ ๋ < ํ์
StringBuilder sb = new StringBuilder();
sb.append("<");
// ์์ ์์ ์์น๋ฅผ ๋ํ๋ด๋ ๋ณ์ '์ธ๋ฑ์ค'๋ฅผ 0์ผ๋ก ์ค์
int idx = 0; // ๋ฃจํ ์์์๋ ์ด์ ์ ๋ง์ง๋ง์ผ๋ก ์ ๊ฑฐ๋ ์ฌ๋์ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋
// ์ฌ๋ ๋ชฉ๋ก์ด ๋น์์ง ๋๊น์ง ๋ฐ
while (list.size() > 1) { // ๋ฆฌ์คํธ์ ํฌ๊ธฐ๊ฐ 1๋ณด๋ค ํฐ ๋์ ๋ฐ๋ณต
**idx = (idx + k - 1) % list.size();** // K๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๊ฑฐ๋ ์ฌ๋์ ์ธ๋ฑ์ค ๊ณ์ฐ
sb.append(list.remove(idx)).append(", "); // ํด๋น ์ธ๋ฑ์ค์ ์ฌ๋์ ์ ๊ฑฐํ๊ณ ์ถ๋ ฅ ๋ฌธ์์ด์ ์ถ๊ฐ
}
sb.append(list.get(0)).append(">"); // ๋ง์ง๋ง์ผ๋ก ๋จ์ ์ฌ๋์ ์ถ๋ ฅ ๋ฌธ์์ด์ ์ถ๊ฐ
System.out.println(sb); // ๊ฒฐ๊ณผ ์ถ๋ ฅ
}
}
- idx = (idx + k - 1) % list.size() : ์ ๊ฑฐ๋ ์ฌ๋์ ์ธ๋ฑ์ค ๊ณ์ฐ
- idx : ๋ฃจํ ์์์๋ ์ด์ ์ ๋ง์ง๋ง์ผ๋ก ์ ๊ฑฐ๋ ์ฌ๋์ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋
- k : ๋๊ตฌ๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ ์ ๊ฑด๋๋ธ ์ฌ๋์ ์
- ์ ๊ฑฐํ ๋ค์ ์ฌ๋์ ์ฐพ์ผ๋ ค๋ฉด k ์ฌ๋์ ๊ฑด๋๋ฐ์ด์ผ ํ๋ฏ๋ก ํ์ฌ ์ธ๋ฑ์ค idx์ k-1์ ์ถ๊ฐํ์ง๋ง ์ด๋ฏธ idx๋ฒ์งธ ์ฌ๋์์ ์์ํ๊ณ ์๋ค.
'๐ Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2828 ์ฌ๊ณผ ๋ด๊ธฐ ๊ฒ์(JAVA) (0) | 2023.04.02 |
---|---|
[๋ฐฑ์ค] 2178 ๋ฏธ๋ก ํ์(JAVA) (0) | 2023.03.27 |
[๋ฐฑ์ค] 1926 ๊ทธ๋ฆผ(JAVA) (0) | 2023.03.21 |
8958 (0) | 2021.08.18 |
1110 (0) | 2021.08.16 |