๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/17687
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ธ๊ฐ ํ๋ํ๋ ์ฝ๋ฉ ๋์๋ฆฌ์์๋ ์ ํต์ ์ผ๋ก ํด์ค๋ ๊ฒ์์ด ์๋ค. ์ด ๊ฒ์์ ์ฌ๋ฌ ์ฌ๋์ด ๋ฅ๊ธ๊ฒ ์์์ ์ซ์๋ฅผ ํ๋์ฉ ์ฐจ๋ก๋๋ก ๋งํ๋ ๊ฒ์์ธ๋ฐ, ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ซ์๋ฅผ 0๋ถํฐ ์์ํด์ ์ฐจ๋ก๋๋ก ๋งํ๋ค. ์ฒซ ๋ฒ์งธ ์ฌ๋์ 0, ๋ ๋ฒ์งธ ์ฌ๋์ 1, … ์ด ๋ฒ์งธ ์ฌ๋์ 9๋ฅผ ๋งํ๋ค.
- 10 ์ด์์ ์ซ์๋ถํฐ๋ ํ ์๋ฆฌ์ฉ ๋์ด์ ๋งํ๋ค. ์ฆ ์ดํ ๋ฒ์งธ ์ฌ๋์ 10์ ์ฒซ์๋ฆฌ์ธ 1, ์ด๋ ๋ฒ์งธ ์ฌ๋์ ๋์งธ ์๋ฆฌ์ธ 0์ ๋งํ๋ค.
์ด๋ ๊ฒ ๊ฒ์์ ์งํํ ๊ฒฝ์ฐ,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, …
์์ผ๋ก ์ซ์๋ฅผ ๋งํ๋ฉด ๋๋ค.
ํํธ ์ฝ๋ฉ ๋์๋ฆฌ ์ผ์๋ค์ ์ปดํจํฐ๋ฅผ ๋ค๋ฃจ๋ ์ฌ๋๋ต๊ฒ ์ด์ง์๋ก ์ด ๊ฒ์์ ์งํํ๊ธฐ๋ ํ๋๋ฐ, ์ด ๊ฒฝ์ฐ์๋
0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, …
์์ผ๋ก ์ซ์๋ฅผ ๋งํ๋ฉด ๋๋ค.
์ด์ง์๋ก ์งํํ๋ ๊ฒ์์ ์ต์ํด์ ธ ์ง๋ ค๊ฐ๋ ์ฌ๋๋ค์ ์ข ๋ ๋์ด๋๋ฅผ ๋์ด๊ธฐ ์ํด ์ด์ง๋ฒ์์ ์ญ์ก ์ง๋ฒ๊น์ง ๋ชจ๋ ์ง๋ฒ์ผ๋ก ๊ฒ์์ ์งํํด ๋ณด๊ธฐ๋ก ํ๋ค. ์ซ์ ๊ฒ์์ด ์ต์ํ์ง ์์ ํ๋ธ๋ ๊ฒ์์ ์ ธ์ ๋ฒ์น์ ๋ฐ๋ ๊ตด์์ ํผํ๊ธฐ ์ํด, ์์ ์ด ๋งํด์ผ ํ๋ ์ซ์๋ฅผ ์ค๋งํธํฐ์ ๋ฏธ๋ฆฌ ์ถ๋ ฅํด ์ฃผ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๋ ค๊ณ ํ๋ค. ํ๋ธ์ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ผ.
์ ๋ ฅ ํ์
์ง๋ฒ n, ๋ฏธ๋ฆฌ ๊ตฌํ ์ซ์์ ๊ฐฏ์ t, ๊ฒ์์ ์ฐธ๊ฐํ๋ ์ธ์ m, ํ๋ธ์ ์์ p ๊ฐ ์ฃผ์ด์ง๋ค.
- 2 โฆ n โฆ 16
- 0 ๏ผ t โฆ 1000
- 2 โฆ m โฆ 100
- 1 โฆ p โฆ m
์ถ๋ ฅ ํ์
ํ๋ธ๊ฐ ๋งํด์ผ ํ๋ ์ซ์ t๊ฐ๋ฅผ ๊ณต๋ฐฑ ์์ด ์ฐจ๋ก๋๋ก ๋ํ๋ธ ๋ฌธ์์ด. ๋จ, 10~15๋ ๊ฐ๊ฐ ๋๋ฌธ์ A~F๋ก ์ถ๋ ฅํ๋ค.
์ ์ถ๋ ฅ ์์
| n | t | m | p | result |
| 2 | 4 | 2 | 1 | "0111" |
| 16 | 16 | 2 | 1 | "02468ACE11111111" |
| 16 | 16 | 2 | 2 | "13579BDF01234567" |
๋ด๊ฐ ์์ฑํ ์ฝ๋
import java.util.*;
class Solution {
public String solution(int n, int t, int m, int p) {
// ์ ๋ต ์ ์ฅํ ๋ณ์ ์์ฑ
String answer = "";
// ํ์ฌ ์ซ์
int i = 0;
// ํ์ฌ ์์
int j = 1;
// ์ ๋ต ๊ฐ์
int cnt = 0;
// ์ข
๋ฃ ํ๋๊ทธ
boolean end = false;
// ๋ฐ๋ณต๋ฌธ ์งํ
while(!end) {
// ํ์ฌ ์ซ์๋ฅผ ์ง๋ฒ ๋ณํ
String s = Integer.toString(i, n).toUpperCase();
// ๋ณํ๋ ์ซ์๋งํผ ํ์ฌ ์์๋ฅผ ์ฒดํฌ
for (char c : s.toCharArray()) {
// ํ์ฌ ์์๊ฐ ์ธ์์๋ฅผ ๋์ผ๋ฉด, ๋ค์ 1๋ถํฐ ๊ณ์ฐ
if (j == m + 1) {
j = 1;
}
// ํ๋ธ ์์๋ผ๋ฉด ์ ๋ต์ ์ถ๊ฐ
if (p == j) {
answer += String.valueOf(c);
// ์ ๋ต ๊ฐ์ ์ฆ๊ฐ
cnt++;
}
// ์ ๋ต ๊ฐ์์ ๊ตฌํด์ผ ํ ๊ฐ์๊ฐ ๊ฐ์ผ๋ฉด ๋ฐ๋ณต๋ฌธ ์ข
๋ฃ
if (cnt == t) {
end = true;
break;
}
j++;
}
i++;
}
// ์ ๋ต ๋ฐํ
return answer;
}
}
๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ์๊ฐํ ๋ฐฉํฅ
์ฒ์ ๋ฌธ์ ๋ฅผ ๋ดค์ ๋, ์ฃผ์ด์ง ์กฐ๊ฑด์ ์ฌ๋ฌ ๋ช ์ด ์์๋๋ก ๋์๊ฐ๋ฉฐ ์ซ์๋ฅผ ๋งํ๋ ๊ฒ์์์ ํน์ ์ฌ๋์ ์ฐจ๋ก์ ํด๋นํ๋ ์ซ์๋ค์ n์ง์๋ก ๋ณํํด ์ด์ด ๋ถ์ฌ ๋ต์ ๊ตฌํ๋ ๊ฒ์ด๋ผ๊ณ ์ดํดํ๋ค. ์ฆ, ๋ชจ๋ ์๋ฅผ n์ง์๋ก ๋ณํํด ์์๋๋ก ๋์ดํ๊ณ , ๊ทธ์ค์์ p๋ฒ์งธ ์ฌ๋์ ์ฐจ๋ก์ ํด๋นํ๋ ์ซ์๋ค์ ์ฐจ๋ก๋ก ๋ชจ์ t๊ฐ๋ฅผ ๋ง๋๋ ๋ฌธ์ ์๋ค.
์กฐ๊ฑด์ ๋ถ์ํด ๋ณด๋, ๊ธฐ๋ณธ์ ์ผ๋ก 0๋ถํฐ ์์ํด์ ์ฐจ๋ก๋๋ก ์ซ์๋ฅผ n์ง์๋ก ๋ณํํ๋ฉด ๋๊ณ , ๋ณํ๋ ๋ฌธ์์ด์ ํ ์๋ฆฌ์ฉ ๋๋์ด ํ๋ ์ด์ด๋ค์๊ฒ ๋ฐฐ๋ถํ๋ฉด ๋๋ค. ๊ฐ ์ซ์๋ ์ฌ๋ฌ ์๋ฆฌ๋ก ํํ๋ ์ ์๊ธฐ ๋๋ฌธ์, ๋จ์ํ "์ซ์ ๋จ์"๊ฐ ์๋๋ผ "์๋ฆฌ ๋จ์"๋ก ์์๋ฅผ ์ธ์ด์ผ ํ๋ค. ๋ฐ๋ผ์ ํ์ฌ ๋ช ๋ฒ์งธ ์์์ธ์ง๋ฅผ ์ถ์ ํ๋ฉด์ p๋ฒ์งธ ์ฐจ๋ก์ ํด๋นํ๋ ๋ฌธ์๋ฅผ ์ฐพ์ผ๋ฉด ๋๋ค.
์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ๋จผ์ ์ซ์ i๋ฅผ 0๋ถํฐ ์์ํด์ ํ๋์ฉ ์ฆ๊ฐ์ํค๋ฉด์, Integer.toString(i, n)์ ์ฌ์ฉํด n์ง์๋ก ๋ณํํ๊ณ ๋๋ฌธ์๋ก ํต์ผํ๋ค. ๋ณํ๋ ๋ฌธ์์ด์ ํ ๊ธ์์ฉ ์ํํ๋ฉด์, ํ์ฌ ์์ j๋ฅผ ๊ด๋ฆฌํ๋ค. j๊ฐ m๋ช ์ ์ด๊ณผํ๋ฉด ๋ค์ 1๋ถํฐ ์์ํ๋๋ก ์ฒ๋ฆฌํ์ฌ ์ํ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์๋ค. ๊ทธ ํ ํ์ฌ ์์๊ฐ p์ ๊ฐ์ผ๋ฉด ์ ๋ต ๋ฌธ์์ด์ ์ถ๊ฐํ๊ณ , ๋ช ๊ฐ๋ฅผ ๋ชจ์๋์ง cnt๋ฅผ ์ธ์ด ๋ชฉํ ๊ฐ์ t์ ๋๋ฌํ๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๋๋ก ํ๋ค.
์ด ๊ณผ์ ์ ํตํด ๋ฌธ์ ์ ํต์ฌ์ n์ง์ ๋ณํ → ์๋ฆฌ ๋จ์๋ก ์์ ์ถ์ → ํน์ ์ฌ๋์ ์ฐจ๋ก๋ง ์์ง → ์ํ๋ ๊ฐ์๋งํผ ๋ต ์์ฑ์ด๋ผ๋ ํ๋ฆ์์ ์ ์ ์์๋ค. ์๊ฐ ๋ณต์ก๋๋ ํ์ํ ๋งํผ์ ์ซ์๋ฅผ ๋ณํํด์ ํ์ธํ๋ ๋จ์ ๋ฐ๋ณต ๊ตฌ์กฐ๋ผ์, ๋ฌธ์ ์์ ์ฃผ์ด์ง ์ ๋ ฅ ๋ฒ์์์๋ ์ถฉ๋ถํ ํจ์จ์ ์ผ๋ก ๋์ํ๋ค.
'๐ฆ ํ๋ก๊ทธ๋๋จธ์ค > ๐๏ธ ์๊ณ ๋ฆฌ์ฆ ํ์ด(Java)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค/Java] k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (0) | 2025.09.15 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค/Java] ์คํจ์จ (1) | 2025.09.05 |
| [ํ๋ก๊ทธ๋๋จธ์ค/Java] ๋ค์ ์๋ ํฐ ์ ์ฐพ๊ธฐ (2) | 2025.09.01 |
| [ํ๋ก๊ทธ๋๋จธ์ค/Java] ๋ฐฉ๋ฌธ ๊ธธ์ด (4) | 2025.08.25 |
| [ํ๋ก๊ทธ๋๋จธ์ค/Java] ๋คํธ์ํฌ (6) | 2025.08.21 |