괄호변환
프로그래머스: https://school.programmers.co.kr/learn/courses/30/lessons/60058
Edge case
1. 재귀
- 종료조건 확인
Code
문제의 안내대로 진행
# 괄호변환
# https://school.programmers.co.kr/learn/courses/30/lessons/60058
# 15:15 ~ 16:30
# @@ 재귀는 종료조건이 꼭 있어야함
def check(s):
# 올바른 괄호 문자열인지 체크
lcnt = 0
rcnt = 0
for i in range(len(s)):
if s[i] == '(':
lcnt += 1
else:
rcnt += 1
if rcnt > lcnt:
return False
return True
def divide(s):
lcnt = 0
rcnt = 0
for i in range(len(s)):
if s[i] == '(':
lcnt += 1
else:
rcnt += 1
if lcnt==rcnt:
return s[ : i+1], s[i+1 : ]
return '', ''
def flip(s):
result = ""
for i in range(len(s)):
if s[i] == '(':
result += ')'
elif s[i] == ')':
result += '('
return result
def process(s):
result = ""
if not s:
return result
u, v = divide(s)
if check(u):
result += u # u 기록해놓기
result += process(v) # v 분리 재귀적 실행
return result
else:
result = '('
result += process(v)
result += ')'
result += flip(u[1:-1])
return result
def solution(p):
return process(p)
반응형
'코딩테스트' 카테고리의 다른 글
감시 피하기 Python 정리 및 구현 (백준 18428) (0) | 2022.08.30 |
---|---|
연산자 끼워넣기 Python 정리 및 구현 (백준 14888, 삼성 SW 역량테스트) (0) | 2022.08.30 |
경쟁적 전염 Python 정리 및 구현 (백준 18405, 삼성 SW 역량테스트) (0) | 2022.07.29 |
특정거리의 도시 찾기 Python 정리 및 구현 (백준 18352, 삼성 SW 역량테스트 기출) (0) | 2022.07.28 |
외벽점검 Python 정리 및 구현 (카카오 기출) (0) | 2022.07.28 |
댓글