๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

https://school.programmers.co.kr/learn/courses/30/lessons/84512

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


1. ๋ฌธ์ œ

A, E, I, O, U๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด๊ฐ€ 5 ์ดํ•˜์ธ ๋‹จ์–ด๊ฐ€ ์ˆ˜๋ก๋œ ์‚ฌ์ „์ด ์žˆ๋‹ค.

ํŠน์ • ๋‹จ์–ด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์‚ฌ์ „์—์„œ ๋ช‡ ๋ฒˆ์งธ ๋‹จ์–ด์ธ์ง€ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

2. ํ’€์ด

์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

map์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์–ด, index๋ฅผ ์ €์žฅํ•˜๋ฉด์„œ ์‚ฌ์ „์—ญํ• ์„ ํ•˜์˜€๋‹ค.

1. ์ดˆ๊ธฐ๊ฐ’์€ "", depth 0์œผ๋กœ ์ถœ๋ฐœํ•œ๋‹ค.

2. ์žฌ๊ท€๋ฅผ ๋Œ ๋•Œ๋งˆ๋‹ค map์— ๋‹จ์–ด์™€ ์ˆœ์„œ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

3. ๊ทธ๋ฆฌ๊ณ  depth๊ฐ€ 5๊ฐ€ ๋˜๋ฉด(๋‹จ์–ด ๊ธธ์ด๊ฐ€ 5) returnํ•ด์ฃผ์–ด ๋‹ค์‹œ ์ด์ „ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ„๋‹ค.

4. ์ด์ „ ์ƒํƒœ์—์„œ ๋‹ค์Œ ์•ŒํŒŒ๋ฒณ์„ ๋ถ™์—ฌ์ฃผ๋ฉฐ ๋ฐ˜๋ณตํ•œ๋‹ค.

์žฌ๊ท€๊ฐ€ ๋๋‚œ ํ›„, map์—์„œ ์ฃผ์–ด์ง„ ๋‹จ์–ด๋ฅผ getํ–ˆ์„ ๋•Œ์˜ value๊ฐ’์ด ์ˆœ์„œ์ด๋ฏ€๋กœ ์ด๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋์ด๋‹ค.

 

3. ์ฝ”๋“œ

import java.io.*;
import java.util.*;

class Solution {
    
    static String[] arr = { "A", "E", "I", "O", "U"};
    static int index = 0;
    static Map<String, Integer> map = new HashMap<> ();
    
    public int solution(String word) {
        int answer = 0;
        
        recursion("", 0);
        answer = map.get(word);
        
        return answer;
    }
    
    static void recursion(String s, int depth) {
        map.put(s, index++);
        
        if (depth == 5) return;
        
        for (int i=0; i<5; i++) {
            recursion(s+arr[i], depth+1);
        }
    }
}

 

4. ์‚ฌ๋‹ด

์ฒ˜์Œ์— ๋ถ€๋ถ„์ง‘ํ•ฉ, ์ˆœ์—ด๋กœ ์ ‘๊ทผํ–ˆ์–ด์„œ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ ธ๋‹ค.

์—ญ์‹œ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ํ’€์–ด๋ด์•ผ ์žฅ๋•ก์ธ๋“ฏํ•˜๋‹ค.