Google 태그 관리자 아이콘

알고리즘 풀이

.leetcode(17. Letter Combinations of a Phone Number)

silvergoni 2021. 1. 31. 14:05
반응형

문제

https://leetcode.com/problems/letter-combinations-of-a-phone-number/

문제 풀기 전

  1. 이렇게 출력하는 문제를 보면 재귀로 다 돌려야한다. 보통이런걸 조건에 따라 돌리기때문에 backtracking이라고 한다.

직접 푼 풀이

소요시간: 22분(13:12 ~ 13:34)

class Solution {
    private String[][] phoneText = new String [][]{{" "},
                                  {},
                                  {"a","b","c"},
                                  {"d","e","f"},
                                  {"g","h","i"},
                                  {"j","k","l"},
                                  {"m","n","o"},
                                  {"p","q","r","s"},
                                  {"t","u","v"},
                                  {"w","x","y","z"}
                                  };
    private List<String> output = new ArrayList<>();

    public List<String> letterCombinations(String digits) {
        if (digits.equals("")) {
            return output;
        }

        int[] array = new int[digits.length()];
        for (int i=0; i<digits.length(); i++) {
            array[i]=(int)(digits.charAt(i)-'0');
        }

        make(array, 0, "");
        return output;
    }

    private void make(int[] array, int index, String word) {
        if (array.length == index) {
            output.add(word);
            return;
        }

        int phoneNumber = array[index];
        String[] texts = phoneText[phoneNumber];
        for (int i=0; i<texts.length; i++) {
            make(array, index+1, word + texts[i]);
        }
    }
}

느낀점

  1. 크게 어려운점은 없었다.

누적되는 알고리즘 접근 설명서

2021/01/09 - [알고리즘 풀이] - .leetcode(알고리즘 문제풀이 접근)