-문제: https://programmers.co.kr/learn/courses/30/lessons/60058
코딩테스트 연습 - 괄호 변환
카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를
programmers.co.kr
일단 지문부터 이해하기가 좀 어려웠다. 문제를 잘풀려면 일단 문제를 잘 이해해야한다
그래서 답지를 보고 풀었다
대부분은 이해가 갔는데 이해가 잘 가지 않는 부분이 있다.
균형 괄호의 인덱스를 구할때는 if count==0: 문장이 바깥에 있는데
올바른 괄호를 check 할때는 왜 이게 else 문에 들어가 있는지 생각을 해봐야 겠다
else:
if count ==0:
return False
count-=1
-정답풀이
def balanced_index(p):
count=0
for i in range(len(p)):
if p[i]=='(':
count+=1
else:
count-=1
if count ==0:
return i
def check_proper(p):
count=0 #왼쪽 괄호의 갯수
for i in p:
if i=='(':
count+=1
else:
if count ==0:
return False
count-=1
return True
def solution(p):
answer = ''
if p =='':
return answer
index = balanced_index(p)
u=p[:index+1]
v=p[index+1:]
#u가 올바른 괄호 문자열이면, v에 대해 함수를 수행한 결과를 붙여 반환
if check_proper(u):
answer = u+ solution(v)
#u가 균형잡힌 괄호 문자열이면 아래의 과정을 수행
else:
answer='('
answer+=solution(v)
answer+=')'
u=list(u[1:-1])
#괄호 뒤집기
for i in range(len(u)):
if u[i]=='(':
u[i]=')'
else:
u[i]='('
answer += "".join(u)
return answer
'코딩테스트 > 기출' 카테고리의 다른 글
[dp기출] 금광 (0) | 2022.05.25 |
---|---|
[프로그래머스/이진탐색] 가사 검색 (0) | 2022.05.25 |
[카카오] 프로그래머스: 60062번 (0) | 2022.05.03 |
[기출/삼성전자] 백준 15686번: 치킨 배달 (0) | 2022.04.29 |
[기출/삼성전자] 백준 3190번 : 뱀 (0) | 2022.04.29 |