개발 공부/알고리즘 문제 풀이

[LeetCode] 17. Letter Combinations of a Phone Number

종범2 2021. 6. 24. 14:42

문제

LeetCode 17. Letter Combinations of a Phone Number

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

 

Letter Combinations of a Phone Number - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

언어

자바스크립트(JavaScript)

 

접근 방법

  1. 배열의 총크기를 구한다.
  2. 나중에 누르는 숫자부터 규칙에 따라 모든 배열에의 요소에 분배한다. 나중에 누르는 숫자는 연속해서 바뀌고, 그다음에 누르는 숫자는 3번에 한 번씩 바뀌고, 그다음에 누르는 숫자는 9번에 한 번씩 바뀌는 규칙을 이용하였다.

코드

/**
 * @param {string} digits
 * @return {string[]}
 */
var letterCombinations = function(digits) {
    if (digits===''){
        return [];
    }
    const digitList = digits.split('');
    const map = {
        '2':'abc',
        '3':'def',
        '4':'ghi',
        '5':'jkl',
        '6':'mno',
        '7':'pqrs',
        '8':'tuv',
        '9':'wxyz'
    }
    let totalSize = 1;
    for(let i=0; i<digits.length; i++){
        totalSize *= map[digits[i]].length;
    }
    let result = new Array(totalSize).fill('');
    let size = 1;
    while(digitList.length){
        let str = map[digitList.pop()];
        for (let i=0; i<totalSize; i++){
            let idx = parseInt(i/size) % str.length;
            result[i] = str[idx] + result[i];    
        }
        size *= str.length;
    }
    return result;
    
};

결과

Runtime: 76 ms, faster than 70.22% of JavaScript online submissions for Letter Combinations of a Phone Number.

Memory Usage: 38.9 MB, less than 9.12% of JavaScript online submissions for Letter Combinations of a Phone Number.

복기

  1. 어렵지 않게 풀수 있었다.