728x90
<문제 링크>
https://programmers.co.kr/learn/courses/30/lessons/60058
<문제 풀이>
- 균형 잡힌 괄호 문자열과 올바른 괄호 문자열을 확인하는 함수를 각각 생성한다.
- 결괏값을 도출할 수 있는 조건이 문제에 자세히 쓰여 있으므로 하나씩 코드를 짠다.
<코드>
#1차시도 - 테스트 2,4,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25
def solution(p):
answer = ''
w=""
for i in p:
w += i
if '()' in w:
w=w.replace('()','')
if w=='':
answer = p
else:
for i in p[::-1]:
answer += i
return answer
#답 확인 후 일주일 후 2차시도
def balance(p):
cnt = 0
for idx, i in enumerate(p):
if i=='(':
cnt += 1
else:
cnt -= 1
if cnt==0:
return idx+1
def correct(w):
if w[0]=='(':
return True
return False
def turn(w):
a = ''
for i in w:
if i=='(':
a+=')'
else:
a+='('
return a
def solution(p):
answer = ''
if p=='':
return ''
idx = balance(p)
u = p[:idx]
v = p[idx:]
if not correct(u):
empty = '('
empty += solution(v)
empty += ')'
empty += turn(u[1:-1])
answer += empty
else:
answer += u
answer += solution(v)
return answer
<고쳐야 할 점>
- 구현 문제는 문제를 꼼꼼히 읽고 순서대로 알고리즘을 짠다.
'두두의 알고리즘 > 문제' 카테고리의 다른 글
[탐욕법] 난이도1, Facebook 인터뷰 '곱하기 혹은 더하기' (Python) (0) | 2021.11.24 |
---|---|
[탐욕법] 프로그래머스 L2 '구명보트' (Python) (0) | 2021.11.24 |
[재귀함수] 백준 10872번 '팩토리얼' (Python) (0) | 2021.11.23 |
[재귀함수] 백준 10829번 '이진수 변환' (Python) (0) | 2021.11.23 |
[해시] 프로그래머스 L2 '전화번호 목록' (Python) (0) | 2021.11.23 |