코딩테스트 연습 - 괄호 변환
카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를
programmers.co.kr
문제 해결
이 문제는 문제에 나온대로 그대로 코드로 변환하면 되는 문제다. 3가지 테스트 케이스에 대해서 한 번 보고, 문제를 제대로 이해했는지 살펴본 뒤에 코드로 변환했다. 코드로 변환하고 바로 맞았던 문제.
나의 풀이
# 균형잡힌 문자열 추출하는 함수
def balancedString(s):
# (())
a = 0
b =0
for index, element in enumerate(s):
if element == '(':
a += 1
elif element == ')':
b += 1
if a == b:
return s[:index+1]
return ''
# 올바른 문자열 추출하는 함수
def correctString(s):
stack = []
for element in s:
if element == '(':
stack.append(element)
elif element == ')' and len(stack) > 0 and stack[-1] == '(':
stack.pop()
if len(stack) > 0:
return False
else:
return True
def solution(p):
answer = ''
if len(p) == 0:
return answer
if correctString(p):
return p
u = balancedString(p)
v = p[len(u):]
temp = ''
if correctString(u):
return u + solution(v)
else:
temp += '('
temp += solution(v)
temp += ')'
for element in u[1:-1]:
if element == '(':
temp += ')'
elif element == ')':
temp += '('
return temp
다른 풀이
IDEA
'Coding Test > 문제 풀이' 카테고리의 다른 글
[문제 풀이] 뉴스 클러스터링 (0) | 2022.02.08 |
---|---|
[문제 풀이] 메뉴 리뉴얼 (0) | 2022.02.07 |
[문제 풀이] H-Index (0) | 2022.01.28 |
[문제 풀이] 기능개발 (0) | 2022.01.25 |
[문제 풀이] 오픈채팅방 (0) | 2022.01.24 |