훈훈훈
파이썬(알고리즘) :: 짝이 같은 괄호 찾기 (탐색 문제) 본문
이번에는 탐색 유령 중 하나인 너무 유명한 괄호 문제에 대하여 정리해보려고 한다.
문제는 다음과 같다.
> 괄호로 이루어진 문자열이 주어지고, 짝이 맞으면 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']
'파이썬 > 알고리즘' 카테고리의 다른 글
파이썬(알고리즘) :: 이진 탐색 트리에서 최소합 찾기 (0) | 2020.05.07 |
---|---|
파이썬(알고리즘) :: 봉우리 개수 찾기 (탐색 문제) (0) | 2020.04.25 |
파이썬(알고리즘) :: m번째 숫자를 제거할때, 최종적으로 남은 숫자 반환(큐 문제) (0) | 2020.04.09 |
파이썬(알고리즘) :: m개의 숫자를 제거할때, 가장 큰 수 출력 (스택 문제) (0) | 2020.04.07 |
파이썬(알고리즘) :: 오름차순으로 정렬 후 위치 찾기 (이분 검색) (0) | 2020.04.05 |
Comments