CS/algorithm & data structure
[프로그래머스] 괄호변환 (파이썬 풀이)
hjkim0502
2022. 6. 25. 21:00
https://programmers.co.kr/learn/courses/30/lessons/60058
코딩테스트 연습 - 괄호 변환
카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를
programmers.co.kr
* 해결 못 함
# 문자열 p를 u, v로 분리하는 함수
def divide(p):
open = 0
close = 0
for i in range(len(p)):
if p[i] == '(':
open += 1
else:
close += 1
if open == close:
return p[:i + 1], p[i + 1:]
# 문자열 u가 올바른 괄호 문자열인지 확인하는 함수
def check(u):
stack = []
for p in u:
if p == '(':
stack.append(p)
else:
if not stack:
return False
stack.pop()
return True
# 올바른 괄호 문자열 변환 프로그램
def solution(p):
if not p:
return ""
u, v = divide(p)
if check(u):
return u + solution(v)
else:
answer = '(' + solution(v) + ')'
for p in u[1:len(u) - 1]:
if p == '(':
answer += ')'
else:
answer += '('
return answer
- 아이디어: 문자열을 u, v로 나누는 함수와 문자열이 올바른 괄호 형태인지 판단하는 함수 생성 후 문제의 알고리즘대로 풀이
- u, v로 나누는 알고리즘을 생각해내지 못함, 순차 탐색하면서 최초로 균형잡힌 모습이 되면 그 지점까지 리턴