배고픈 개발자 이야기
[2020 kakao blind] 괄호변환 본문
728x90
괄호 맞추기 문제로 stack 개념을 사용하여 풀었다
요점은 다음 함수 2개를 잘 구현하면된다.
1. 올바른 괄호쌍을 검사하는 함수
2. u, v로 나누어 규칙에 맞게 처리하는 함수
def compact(p):
stack = []
for x in p:
if x == '(':
stack.append('(')
else:
if not stack:
return False
stack.pop()
return True
def seperate(p):
if not p:
return p
l, r = '', ''
if p[0] == '(':
l, r = '(', ')'
else:
l, r = ')', '('
stack = []
idx = 0
for i, x in enumerate(p):
if x == l:
stack.append(x)
else:
idx = i
break
for i, x in enumerate(p[idx:]):
if x == l:
stack.append(x)
else:
stack.pop()
if not stack:
idx = idx + i + 1
break
u, v = p[:idx], p[idx:]
if compact(u):
return u + seperate(v)
else:
temp = '(' + seperate(v) + ')'
for x in u[1:len(u)-1]:
if x == '(':
temp += ')'
else:
temp += '('
return temp
def solution(p):
answer = ''
answer = seperate(p)
return answer
'알고리즘 문제 > PROGRAMMERS' 카테고리의 다른 글
[그래프] 가장 먼 노드 (0) | 2022.11.09 |
---|---|
[2021 KAKAO BLIND] 신규 아이디 추천 (0) | 2021.10.07 |
[2018 kakao blind] 뉴스클러스터링 (0) | 2021.08.10 |
[2021 카카오 인턴] 수식 최대화 (0) | 2021.08.07 |
[2018 kakao blind] 다트게임 (0) | 2021.08.01 |
Comments