Publish:

ํƒœ๊ทธ: , , , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

img_3.png

๋ฌธ์ œ

๋ฌธ์ œ ๋งํฌ

img_3.png

์„ค๋ช…

์•ŒํŒŒ๋ฒณ ๋ชจ์Œ 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;
  }
}

img_3.png ์ด๋ ‡๊ฒŒ ํ’€์–ด๋„ ํ†ต๊ณผ๋ฅผ ํ•˜๊ธด ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ๋งŽ๋‹ค.

ํ’€์ด (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);
    }
  }
}

img_3.png

๋ฐฉ๋ฌธํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋Œ“๊ธ€,์ง€์ ,ํ”ผ๋“œ๋ฐฑ ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค๐Ÿ˜Š

๐Ÿ˜€

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ