반응형
문제
괄호하면 생각나는 자료구조인 stack을 사용하는 구현문제이다.
문제를 이해하는 게 좀 어렵지만, 그냥 저기 나와있는 그대로 하면 된다.
진짜 그대로만 구현하면 된다,,
코드
def solution(p):
answer = ""
# 1.
return fun("", p)
def fun(u,v):
if v == "":
return ""
leftCnt = 0
rightCnt = 0
# 2. ( 와 ) 개수가 같을 때까지 찾기
for i in range(len(v)):
if v[i] == "(":
leftCnt += 1
else:
rightCnt += 1
if leftCnt == rightCnt:
if i == len(v) - 1:
u = v
v = ""
break
u = v[:i+1]
v = v[i+1:]
break
# 3. u가 올바른 괄호 문자열 인지 판별
stack = []
for i in range(len(u)):
# 만약 ) 인데 stack이 null 이면 continue
if u[i] == ")":
if stack:
stack.pop()
else:
stack.append(u[i])
# 만약 stack이 empty면 올바른 괄호 문자열 아니면 올바른 거 아님
if len(stack) == 0:
return u + fun("", v)
tmp = "("
tmp += fun("",v)
tmp += ")"
u = u[1:-1]
for i in range(len(u)):
if u[i] == "(":
tmp += ")"
else:
tmp += "("
return tmp
"""
구현 문제로
그냥 구현하라는 대로 따라서 구현하면 될 거 같은데
"""
반응형
'👨🏫ps > ❄️프로그래머스' 카테고리의 다른 글
[프로그래머스] 거리두기 확인하기 [python] (0) | 2023.03.29 |
---|---|
[프로그래머스] 택배상자 [python] (0) | 2023.03.26 |
[프로그래머스] 메뉴 리뉴얼 [python] (0) | 2023.03.25 |
[프로그래머스] 롤케이크 자르기 [python] (0) | 2023.03.24 |
[프로그래머스] 숫자 변환하기 [python] (0) | 2023.03.24 |