LeetCode 17. Letter Combinations of a Phone Number (Java)

Kim Yongbin·2024년 5월 2일
post-thumbnail

문제

Letter Combinations of a Phone Number - LeetCode

Code

1차 풀이

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

class Solution {
    Map<Character, List<Character>> letterMap = new HashMap<>(){{
        put('2', List.of('a', 'b', 'c'));
        put('3', List.of('d', 'e', 'f'));
        put('4', List.of('g', 'h', 'i'));
        put('5', List.of('j', 'k', 'l'));
        put('6', List.of('m', 'n', 'o'));
        put('7', List.of('p', 'q', 'r', 's'));
        put('8', List.of('t', 'u', 'v'));
        put('9', List.of('w', 'x', 'y', 'z'));
    }};

    public List<String> letterCombinations(String digits) {
        List<String> answer = new ArrayList<>();
        if (digits.length() == 0) return answer;

        searchDFS(digits, 0, new StringBuilder(), answer);
        return answer;
    }

    public void searchDFS(String digits, int idx, StringBuilder path, List<String> answer){
        if (digits.length() == idx){
            answer.add(String.valueOf(path));
            return;
        }

        for (char c: letterMap.get(digits.charAt(idx))){
            searchDFS(digits, idx + 1, new StringBuilder(path).append(c), answer);
        }
    }
}
  • 앞 글자부터 탐색하면서 path를 쌓아나갔고, 탐색이 끝나면 answer List에 현재의 path를 담았다.

profile
반박 시 여러분의 말이 맞습니다.

0개의 댓글