반응형
포인트
- 정말 주어진 그대로를 구현하는 문제였습니다. '반환' , '재귀' 이런 용어들이 구현하는데에 커다란 도움이 되었습니다.
🧶문서는 항상 수정될 수 있습니다. 비판은 환영합니다.
python
def check(line: str) -> bool:
stack = []
for ele in line:
if not stack:
stack.append(ele)
elif stack and stack[-1] == '(' and ele == ')':
stack.pop(-1)
else:
stack.append(ele)
return len(stack) == 0
def go(target: str) -> str:
if not target:
return ''
left, right = 0, 0
u, v = '', ''
for index, value in enumerate(target):
if value == '(':
left += 1
if value == ')':
right += 1
if left == right:
u, v = target[:index + 1], target[index + 1:]
break
if check(u):
return u + go(v)
else:
temp = '(' + go(v) + ')'
reverse_u = u[1:-1]
tail = ""
for re in reverse_u:
if re == '(':
tail += ')'
else:
tail += '('
temp += tail
return temp
def solution(p: str):
return p if check(p) else go(p)
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] 문자열 압축 (0) | 2021.05.03 |
---|---|
[알고리즘] Running Sum of 1d Array (0) | 2021.05.03 |
[알고리즘] 오픈 채팅방 (0) | 2021.05.02 |
[알고리즘] 멀리 뛰기 (0) | 2021.05.02 |
[알고리즘] 야근 지수 (0) | 2021.05.02 |
댓글