784_Letter Case Permutation

less than 1 minute read

알파벳으로 이루어진 글자만 백트래킹하면 되는 문제이다. 초기에 모두 소문자로 변경한 다음에 알파벳이 있는 경우만 backtracking을 해주면 해결이 가능하다.
string의 isalpha()함수를 사용하였다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution(object):
    def letterCasePermutation(self, S):
        """
        :type S: str
        :rtype: List[str]
        """
        #test_S = list("a1b2")
        final_output = []
        def backtracking(input_string, idx, n):
            
            if idx == n:
                print("".join(input_string))
                final_output.append("".join(input_string))
            else:
                backtracking(list(input_string), idx+1, n)
                
                if input_string[idx].isalpha():
                    input_string[idx] = input_string[idx].upper()
                    backtracking(list(input_string), idx+1, n)
        
        backtracking(list(S.lower()), 0, len(list(S)))
        
        return  final_output