def solution(p):
if p == '':
return ''
u = ''
v = ''
for i in p:
u += i
if u.count('(') == u.count(')'):
break
v = p[len(u):]
if check_right(u):
return u + solution(v)
else:
return '(' + solution(v) + ')' + trim(u)
def check_right(s): # 올바른 괄호 문자열 검사
stack = []
for i in s:
if len(stack) > 0:
if stack[-1] == '(' and i == ')':
stack.pop()
else:
stack.append(i)
else:
stack.append(i)
if len(stack) == 0:
return True
else:
return False
def trim(s):
res = ''
if len(s)==2:
return ''
else:
for i in range(1, len(s)-1):
if s[i] == '(':
res += ')'
else:
res += '('
return res
주어진 조건대로 착실하게 구현하면 되는 문제인 것같다.
문자열은 역시 파이썬 짱짱맨.
괄호 쌍 검사는 스택을 이용하는 것이 국룰.
trim은 좌우 문자 제거후 뒤집는 함수이다.
카카오 문제들 되게 재밌는 것 같다.
'Algorithm | SQL > Programmers' 카테고리의 다른 글
[Programmers | Level 3] 네트워크 (Python) (0) | 2021.05.19 |
---|---|
[Programmers | Level 3] 가장 먼 노드 (Python) (0) | 2021.05.15 |
[Programmers | Level 2] 뉴스 클러스터링 (Python) (2018 KAKAO BLIND RECRUITMENT) (0) | 2021.05.12 |
[Programmers | Level 2] 오픈채팅방 (Python) (2019 KAKAO BLIND RECRUITMENT) (0) | 2021.05.12 |
[Programmers | Level 2] 게임 맵 최단거리 (Python) (0) | 2021.05.04 |