티스토리 뷰

서양권 사이트라 저작권 규정을 모르기 때문에 문제는 요약해서 작성한다.

 

숫자 문자열을 받아 각 숫자가 나타내는 문자 조합의 모든 가능한 조합 반환

 

이 문제를 해결하기 위해 완전탐색 알고리즘을 사용했다.

해당 문제를 풀기 위해 다음과 같은 과정을 거쳐야한다.

1. 문자 매핑
  - 각 숫자가 나타내는 문자를 매핑
2. 완전탐색
  - 모든 가능한 문자 조합 생성
3. 반환

 

작성한 코드는 다음 순서를 따른다.

1. 문자 매핑 설정:: 각 숫자에 해당하는 문자 매핑
2. 완전탐색:: 현재의 조합과 남은 숫자를 인자로 받아 재귀적으로 조합 생성
3. 기저 조건:: 더 이상 남은 숫자가 없을 때 조합을 결과에 추가
4. 재귀호출:: 현재 숫자에 해당하는 모든 문자가 재귀적으로 다음 숫자 처리
function letterCombinations(digits) {
    if (digits.length === 0) return [];

    const phoneMap = {
        '2': ['a', 'b', 'c'],
        '3': ['d', 'e', 'f'],
        '4': ['g', 'h', 'i'],
        '5': ['j', 'k', 'l'],
        '6': ['m', 'n', 'o'],
        '7': ['p', 'q', 'r', 's'],
        '8': ['t', 'u', 'v'],
        '9': ['w', 'x', 'y', 'z']
    };

    const result = [];

    function backtrack(combination, nextDigits) {
        if (nextDigits.length === 0) {
            result.push(combination);
        } else {
            const digit = nextDigits[0];
            const letters = phoneMap[digit];
            for (let i = 0; i < letters.length; i++) {
                backtrack(combination + letters[i], nextDigits.slice(1));
            }
        }
    }

    backtrack("", digits);
    return result;
}

댓글