본문 바로가기
코테/DFS, BFS

[java] 프로그래머스 스쿨 문자사전

by 상똥 2023. 12. 27.
풀이
1. A, E, I, O, U를 순서대로 저장한 배열 words을 생성한다.
- 이때, 어디에서든지 접근할 수 있도록 static으로 선언한다
2. 문자사전에 모든(?) 문자열을 저장할 수 있도록 words라는 리스트를 생성한다
- 이때, 어디에서든지 접근할 수 있도록 static으로 선언한다
3. dfs함수를 선언한다
- 파라미터로 전달된 문자 word를 words에 저장한다.
- 파라미터로 전달된 words의 인덱스 depth가 5이면 (즉, U로 이루어진 문자가 끝나면) return
- 반복문을 사용하여 word에 알파벳을 하나씩 더하고, depth에 1을 더해서 다시 dfs를 호출한다
- answer는 찾으려는 문자 word의 words내 인덱스 값이다
회고
- 완전탐색으로 안풀고 수학적으로 접근하려다가 개박살났다
- 어차피 반복문으로 돌리기 때문에 정렬은 필요가 없었다!!
코드 (접은 글)
더보기
import java.util.*;

class Solution {
    public static String[] alphabet = {"A", "E", "I", "O", "U"};
    public static ArrayList<String> words;
    
    public int solution(String word) {
        int answer = 0;
        words = new ArrayList<>();

        dfs("", 0);
        answer = words.indexOf(word);

        return answer;
    }

    public static void dfs(String word, int depth){
        words.add(word);
        if(5 == depth)    
            return;

        for (int i = 0; i < alphabet.length; i++) {
            dfs(word + alphabet[i], depth + 1);
        }
    }
}