https://programmers.co.kr/learn/courses/30/lessons/60058
주어진 조건대로 구현하면 되는 문제다.
살짝 까다롭긴 했지만 풀만 했던 것 같다.
나의 코드
def check_correct(p):
stack = []
for i in p:
if i =='(':
stack.append(i)
elif len(stack) ==0:
return False
else:
stack.pop()
return True
def split_bracket(p):
stack = []
for i,v in enumerate(p):
if len(stack)==0:
stack.append(v)
elif stack[-1] == v:
stack.append(v)
else:
stack.pop()
if len(stack) == 0:
return p[:i+1] , p[i+1:]
def solution(p):
if len(p) ==0:
return p
# 올바른 괄호 문자열인지 확인
if check_correct(p):
return p
# 두 문자열로 분리 u는 더 이상 쪼갤 수 없는 균형잡힌 문자열
answer = ''
u, v = split_bracket(p)
if check_correct(u):
answer += u + solution(v)
else:
u = u[1:-1]
stack = ''
for i in u:
if i =='(':
stack+=')'
else:
stack+='('
u = stack
answer += '('+solution(v)+')'+ u
return answer
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스] 큰 수 만들기(Python) (0) | 2021.10.27 |
---|---|
[프로그래머스] 조이스틱(Python) (0) | 2021.10.26 |
[프로그래머스] 짝지어 제거하기(Python) (0) | 2021.10.23 |
[프로그래머스] 오픈채팅방(Python) (0) | 2021.10.22 |
[프로그래머스] 부족한 금액 계산하기(Python) (0) | 2021.10.21 |
댓글