[PS] 99ํด๋ฝ ์ฝํ ์คํฐ๋ 16์ผ์ฐจ TIL (๋ชจ์์ฌ์ )
ํ๊ทธ: 99ํด๋ฝ, PS, TIL, ์์ ํ์, ์ฝ๋ฉํ ์คํธ์ค๋น, ํญํด99
์นดํ ๊ณ ๋ฆฌ: PS
![]()
๋ฌธ์

์ค๋ช
์ํ๋ฒณ ๋ชจ์ 5๊ฐ๋ก ๋ง๋ค ์ ์๋ ๋ชจ๋ ์กฐํฉ์์ ํน์ ๋จ์ด๊ฐ ๋ช๋ฒ์งธ ์ธ๋ฑ์ค์ ์๋์ง ๋ฐํํ๋ฉด ๋๋ค.
ํ์ด
๋จ์ํ๊ฒ ๋จ์ด ํ๋๋ก ๋ง๋ค ์ ์๋ ์กฐํฉ๋ถํฐ ๋จ์ด ๋ค์ฏ๊ฐ์ ์กฐํฉ๊น์ง ๋ชจ๋ ๊ณ์ฐํด ๋ฐฐ์ด์ ๋ด๊ณ , ๋ฐฐ์ด์ ์ฌ์ ์์ผ๋ก ์ ๋ ฌํ๋ค. ๊ทธ ํ ์ฐพ๊ณ ์ ํ๋ ๋จ์ด์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ค.
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
class Solution {
public int solution(String word) {
int answer = 0;
String[] alphabet = {"A", "E", "I", "O", "U"};
String[] all =
new String[(int) (5 + Math.pow(5, 2) + Math.pow(5, 3) + Math.pow(5, 4) + Math.pow(5, 5))];
int index = 0;
for (int i = 0; i < 5; i++) {
all[index++] = alphabet[i];
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
all[index++] = alphabet[i] + alphabet[j];
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
for (int k = 0; k < 5; k++) {
all[index++] = alphabet[i] + alphabet[j] + alphabet[k];
}
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
for (int k = 0; k < 5; k++) {
for (int l = 0; l < 5; l++) {
all[index++] = alphabet[i] + alphabet[j] + alphabet[k] + alphabet[l];
}
}
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
for (int k = 0; k < 5; k++) {
for (int l = 0; l < 5; l++) {
for (int m = 0; m < 5; m++) {
all[index++] = alphabet[i] + alphabet[j] + alphabet[k] + alphabet[l] + alphabet[m];
}
}
}
}
}
Arrays.sort(all);
for (int i = 0; i < all.length; i++) {
if (all[i].equals(word)) {
answer = i + 1;
break;
}
}
return answer;
}
}
์ด๋ ๊ฒ ํ์ด๋ ํต๊ณผ๋ฅผ ํ๊ธด ํ๋๋ฐ ์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ๋ง๋ค.
ํ์ด (dfs)
์ ๊ณผ์ ์ ๊ฒฐ๊ตญ "A", "E", "I," "O", "U" ๋ฅผ ๊ณ์ํด์ ๋ง๋ถ์ฌ ๋๊ฐ๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ฒ์ โโ ๋น ๋ฌธ์์ด์์ ์ถ๋ฐํด ๊ธธ์ด๊ฐ 5๊ฐ ๋ ๋ ๊น์ง ๋ชจ์ ๋ฐฐ์ด์ ์ํํ๋ฉด์ ์ด์ ๋ฌธ์์ด์ ๋ง๋ถ์ด๋ ๊ณผ์ ์ ์ฌ๊ทํจ์๋ก ๊ตฌํํ๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
all =
[A, E, I, O, U,
AA, AE, AI, AO, AU,
EA, EE, EI, EO, EU,
IA, IE, II, IO, IU,
OA, OE, OI, OO, OU,
UA, UE, UI, UO, UU,
AAA, AAE, AAI, AAO, AAU,
AEA, AEE, AEI, AEO, AEU,
AIA, AIE, AII, AIO, AIU,
...
]
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
import java.util.*;
class Solution {
static String[] alphabet = {"A", "E", "I", "O", "U"};
static String[] all =
new String[(int) (5 + Math.pow(5, 2) + Math.pow(5, 3) + Math.pow(5, 4) + Math.pow(5, 5))];
static int index = 0;
public int solution(String word) {
for (int i = 1; i <= 5; i++) {
dfs("", i, 0);
}
Arrays.sort(all);
return Arrays.binarySearch(all, word) + 1;
}
static void dfs(String word, int length, int depth) {
if (depth == length) {
all[index++] = word;
return;
}
for (String a : alphabet) {
dfs(word + a, length, depth + 1);
}
}
}

๋๊ธ๋จ๊ธฐ๊ธฐ