https://school.programmers.co.kr/learn/courses/30/lessons/60058
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
from collections import deque
def solution(p):
answer = ''
def is_correct(s):
q = deque()
isCorrect = False
for s_ in s:
if s_ == '(':
q.append('(')
elif len(q) == 0:
isCorrect = False
break
else:
q.popleft()
else:
if len(q) == 0:
isCorrect = True
else:
isCorrect = False
return isCorrect
def is_balance(s):
c = 0
isBalance = False
for s_ in s:
if s_ == '(':
c += 1
if c == len(s) - c:
isBalance = True
return isBalance
def do(s):
if s == '':
return '', ''
u = ''
v = ''
q = deque(s)
while q:
p_ = q.popleft()
if p_ == '(':
u += '('
else:
u += ')'
isBalance = is_balance(u)
if isBalance:
v = ''.join(q)
break
return u, v
while True:
isCorrect = is_correct(p)
if isCorrect:
answer += p
p = ""
if p == "":
return answer
u, v = do(p)
if is_correct(u):
answer += u
p = v
else:
temp = '('
u_, v_ = do(v)
temp += u_
temp += ')'
q = deque(u)
if q:
q.popleft()
q.pop()
while q:
if q.popleft() == '(':
temp += ')'
else:
temp += '('
p = temp
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] / [Level 3] / [Python] 이중우선순위 큐 (0) | 2023.04.03 |
---|---|
[프로그래머스] / [Level 3] / [Python] 최고의 집합 (0) | 2023.03.27 |
[프로그래머스] / [Level 2] / [Python] [3차] 파일명 정렬 (0) | 2023.03.27 |
[프로그래머스] / [Level 2] / [Python] 메뉴 리뉴얼 (0) | 2023.03.22 |
[프로그래머스] / [Level 2] / [Python 오픈채팅방 (0) | 2023.03.22 |