1. 문제
1) 문제에서 주어진 정의에 따라 요구한 순서대로 풀면 된다.
2) 말 그대로 언어를 프로그래밍 언어로 변환하면 되는 문제이기 때문에 매우 쉬운 문제이다.
3) 알고리즘은 사실상 완전한 괄호를 찾는 알고리즘(스택이나 Brute force 이용)만 필요.
2. 풀이
좀 길긴 하지만 누구나 이해하기 쉽게 짰다는 점에서 만족스럽다.
다만 함수 이름과 변수명에 대해서는 좀 고민이 필요할듯..^^
def solution(p):
answer = ''
if not p :
return answer
while not is_val(p) :
idx = find_u(p)
u = p[:idx]
v = p[idx:]
if is_val(u) :
answer += u
p = v
else :
temp_v = solution(v)
temp_u = change(u[1:-1])
p = "(" + temp_v + ")" + temp_u
answer += p
return answer
def change(s) :
answer = ''
if not s :
return answer
for i in s :
if i == "(" :
answer += ")"
else :
answer += "("
return answer
def is_val(p) :
stack = []
for i in p :
if i == "(" :
stack.append(i)
else :
if not stack :
return False
else :
stack.pop()
return True
def find_u(p) :
m = 0
n = 0
for i in range(len(p)) :
if p[i] == "(" :
m += 1
else :
n += 1
if n == m :
return i + 1
'알고리즘 > 프로그래머스' 카테고리의 다른 글
2019 KAKAO BLIND RECRUITMENT - 오픈채팅방, 파이썬 (0) | 2021.02.23 |
---|---|
2020 KAKAO BLIND RECRUITMENT - 가사 검색 (파이썬) (0) | 2021.02.19 |
카카오 코딩테스트- 문자열 압축, 파이썬 (0) | 2021.02.16 |
카카오 코딩테스트 2021 - 합승 택시 요금 (파이썬) (0) | 2021.02.07 |
2021 KAKAO BLIND RECRUITMENT - 순위 검색, 파이썬 (0) | 2021.02.04 |