728x90
이번 문제는 문제와 구현방법이 나타나 있는 문제였다. 사실 아직까지도 왜 마지막에 첫번째와 마지막 문자를 제거한다음에 괄호를 제거하는지는 잘 이해가 되지 않는다 ㅠㅠ 조금더 이러한 문제들을 많이 풀어본 후에 꼭 다시풀어봐야할 문제인 것 같다. 다만, 이 순서를 따라서 코드를 구현하는거 자체는 어느정도 이해했다.
차분하게 1번부터 차근차근 구현한다면 설령 이해를 잘 못하더라도 충분히 풀 수 있는 문제였다.
사실 4-4단계빼고는 다 잘 이해한것 같다.
from collections import deque
balanced_parentheses_string = "()))((()"
def is_correct_parenthesis(string):
stack = []
for s in string:
if s == '(':
stack.append(s)
elif stack:
stack.pop()
return len(stack) == 0
def separate_to_u_v(string):
queue = deque(string)
left, right = 0, 0
u, v = "", ""
while queue:
char = queue.popleft()
u += char
if char == "(":
left += 1
else:
right += 1
if left == right:
break
v = ''.join(list(queue))
return u,v
def reverse_parenthesis(string):
reversed_string = ""
for char in string:
if char == '(':
reversed_string += ')'
else:
reversed_string += '('
return reversed_string
def change_to_correct_parenthesis(string):
if string == "":
return ""
u,v = separate_to_u_v(string)
if is_correct_parenthesis(u):
return u+change_to_correct_parenthesis(v)
else :
return "(" + change_to_correct_parenthesis(v) +")" +reverse_parenthesis(u[1:-1])
def get_correct_parentheses(balanced_parentheses_string):
if is_correct_parenthesis(balanced_parentheses_string):
return balanced_parentheses_string
else:
return change_to_correct_parenthesis(balanced_parentheses_string)
print(get_correct_parentheses(balanced_parentheses_string)) # "()(())()"가 반환 되어야 합니다!
728x90
'Python > 알고리즘공부' 카테고리의 다른 글
09_구슬게임 (0) | 2021.11.08 |
---|---|
08_새로운게임_삼성역량테스트 (0) | 2021.11.05 |
06_문자열 압축 (0) | 2021.11.05 |
05_catchme 문제! ( 상반기 line인턴채용문제) (1) | 2021.11.05 |
04_ 피보나치 수열 및 여러 문제들(hard) (0) | 2021.10.29 |