→ Problems

[Algorithm] 프로그래머스 - 모음사전

Swift librarian 2025. 2. 5. 13:57

🥸 문제 소개

🧑🏻‍💻 문제 풀이

사전을 순서대로 만들어 나가면서 target이 현재 추가된 단어와 같다면 값을 리턴하게 만들었다. 사전을 만들어 나가는 과정은 재귀함수를 활용하여 구현했다.

func solution(_ target: String) -> Int {
    let vowels = ["A", "E", "I", "O", "U"]
    var found = false
    var answer = 0

    func dfs(_ word: String) {
        if word.count > 5 || found { return }
        
        answer += 1
        
        if word == target {
            found = true
            return
        }
        
        vowels.forEach { dfs(word + $0) }
    }

    vowels.forEach { dfs($0) }
    
    return answer
}

이 문제는 사실 전위 탐색과도 깊은 연관이 있다. 아래와 같은 구조가 있을 때, 전위 탐색은 A → B → D → E → C 의 과정을 거치는데 이것이 여기서 말하는 사전의 순서와 같다.

       A
      / \
     B   C
    / \
   D   E

아래와 같이 나쁘지 않은 결과를 얻을 수 있었다~ 😇