Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 일지

17. Letter Combinations of a Phone Number (전화번호의 문자 조합) 본문

코딩 테스트/LeetCode

17. Letter Combinations of a Phone Number (전화번호의 문자 조합)

포카리tea 2023. 5. 10. 00:51

inclusive의 숫자를 포함하는 문자열이 주어지면 2-9숫자가 나타낼 수 있는 모든 가능한 문자 조합을 반환합니다.

순서에 상관없이 답변을 반환합니다.

숫자와 문자의 매핑(전화 버튼과 동일)이 아래에 나와 있습니다. 1은 어떤 문자에도 매핑되지 않습니다.

 

예시 1:

입력: digits = "23"
출력: ["ad","ae","af","bd","be","bf","cd","ce","cf"]

 

예시 2:

입력: digits = ""
출력: []

 

예시 3:

입력: digits = "2"
출력: ["a","b","c"]

 

조건:

  • 0 <= digits.length <= 4
  • digits[i]는 ['2', '9'] 범위의 숫자입니다.

 

정답:

public class Solution {
    public IList<string> LetterCombinations(string digits) {
        var result = new List<string>();
        var dLength = digits.Length;
        if (dLength == 0)
            return result;

        var phoneStr = new string[]
        {
            "abc",
            "def",
            "ghi",
            "jkl",
            "mno",
            "pqrs",
            "tuv",
            "wxyz"
        };

        var comb = new char[dLength];
        Combinations(0);
        return result;

        void Combinations(int i)
        {
            if (i == dLength)
            {
                result.Add(new string(comb));
                return;
            }

            int index = digits[i] - '2';
            for (int j = 0; j < phoneStr[index].Length; j++)
            {
                comb[i] = phoneStr[index][j];
                Combinations(i + 1);
            }
        }
    }
}

해설: 

각 숫자마다 지정되있는 문자를 넣어 둔 후 문자열 더한 값을 result에 추가해주고 전부 추가될때까지 반복해주었습니다.