훈훈훈

파이썬(알고리즘) :: 짝이 같은 괄호 찾기 (탐색 문제) 본문

파이썬/알고리즘

파이썬(알고리즘) :: 짝이 같은 괄호 찾기 (탐색 문제)

훈훈훈 2020. 4. 25. 14:53

이번에는 탐색 유령 중 하나인 너무 유명한 괄호 문제에 대하여 정리해보려고 한다.

 

문제는 다음과 같다.

>  괄호로 이루어진 문자열이 주어지고, 짝이 맞으면 YES, 틀리면 NO를 반환, (단, 문자열의 길이는 6으로 가정한다.)

 

# 접근 방법

 

접근 방법은 위 그림과 같다.

먼저 주어진 문자열의 처음 길이를 저장 후, 반복문을 돌려 짝이 맞는 괄호를 발견하면 공백으로 제거해주는 작업을 반복한다.

 

그 다음 처음 문자열 길이와 나중 문자열 길이를 비교 후 YES, NO를 판별한다.

 

 

# 풀이

def check_func(values):
    answer   = []
    str_list = ['[]', '{}', '()']

    # 인자로 받은 문자열로 이루어진 리스트 탐색
    for element in values:
        first = 0
        last  = 0
        size  = len(element)

        # 각각의 문자열들 탐색
        while size > 0:
            first = len(element)

            # 괄호 공백으로 치환
            for string in str_list:
                element = element.replace(string, '')

            # 처음 문자열 길이와 나중 문자열 길이 비교
            last = len(element)

            if first == last:
                break

            size = len(element)

        if size == 0:
            answer.append('YES')
        else:
            answer.append('NO')   

    return answer

a = ['{}[]()', '{[}]}']
print(check_func(a))

 

 

# 실행 결과

(base) Waveui-MacBookPro:coding_test wave$ python test.py
['YES', 'NO']

 

Comments