출처 : 프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/60058
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
요구하는 알고리즘만 잘 이해한다면, 어렵지 않게 풀 수 있는 문제.
최근으로 갈수록 문제에 설명이 복잡해져 비문학 독해 능력이 요구된다는 느낌이 든다.
더보기
먼저, 생각해야 할 부분
1. 설명을 잘 이해하는게 급선무
문제에서 구현을 요구하는 알고리즘을 일단 차근차근 읽어보고 어떤 형태로 구현하는게 편할지 고민해보자.
2. 문제에서 대놓고 재귀라고 계속 말하고 있다. 어떤 방법으로 재귀함수를 구현하는 것이 좋을지 고민해보자.
풀이
def makeUV(string):
left_p = 0
right_p = 0
for i in range(len(string)):
if string[i] == '(':
left_p += 1
else:
right_p += 1
if left_p == right_p:
return [string[:i+1], string[i+1:]]
def isRightPar(p):
is_right = 0
for char in p:
if char == '(':
is_right += 1
else:
is_right -= 1
if is_right < 0:
return False
return True
def makeNewU(u):
string = ''
for char in u[1:-1]:
if char == '(':
string += ')'
else:
string += '('
return string
def solution(p):
if p == '':
return ''
u, v = makeUV(p)
if isRightPar(u):
return u + solution(v)
else:
return '(' + solution(v) + ')' + makeNewU(u)
Github
GitHub - bh2980/Algorithm-Problem: 알고리즘 풀이 흔적들
알고리즘 풀이 흔적들. Contribute to bh2980/Algorithm-Problem development by creating an account on GitHub.
github.com
'알고리즘 > Python' 카테고리의 다른 글
[python] 프로그래머스 - 하노이의 탑 (0) | 2023.03.11 |
---|---|
[python] 프로그래머스 - 두 큐 합 같게 만들기 (0) | 2023.03.10 |
[python] 프로그래머스 - 메뉴 리뉴얼 (0) | 2023.03.10 |
[python] 프로그래머스 - 오픈채팅방 (0) | 2023.03.09 |
[python] 프로그래머스 - k진수에서 소수 개수 구하기 (0) | 2023.03.09 |