[TIL] Code Kata 7

SEUNGCHAN BAEK·2021년 4월 8일
0

Code Kata

목록 보기
6/7
post-thumbnail

def is_valid(string):
    type_match = {'(': ')', '[': ']', '{': '}'}
    type_check = ['(', '[', '{']
    string_list = []
    string_final = []

    if len(string) <= 1:
        return False

    if string[0] in type_check:
        for i in range(len(string)):
            if string[i] in type_check:
                string_list.append(string[i])
                string_final.append(string[i])
            else:
                if len(string_list) == 0:
                    return False
                else:
                    string_final.append(type_match[string_list[-1]])
                    string_list.pop()
    else:
        return False

    if len(string_list) != 0:
        for i in range(len(string_list)):
            string_final.append(string_list[i])


    return ''.join(string_final) == string

이 문제를 읽었을때 많은 고민을 했다. s = "(){}" 와 같이 같은 타입이 반복되는 경우에는 쉽게 구현할 수 있지만 s = "{[]}" 와 같이 두개씩 비교를 할수 없는 경우로 인해 많이 힘들어진것 같다.

나는 이 문제를 풀기 위해서 어떤 값이 들어왔을때 올바른 값을 만들어서 올바르게 만들어진 값과 들어온 값을 비교해서 True or False를 리턴 시켰다.

예를들어, "({{)" 이 값이 들어온 경우, 올바른 값은 "({{}})" 이다 그래서 올바른 값을 나오게 구현하고 입력값과 비교해서 True or False를 반환하도록 구현한 코드이다.

profile
백엔드 개발자가 되는 그날까지

0개의 댓글

관련 채용 정보