Programmers_2020 카카오 기출 괄호 변환(python)
프로그래머스 -괄호 변환 문제 입니다.
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/60058
2. 분류 및 난이도
Programmers 문제입니다.
2020 KaKao BLIND RECRUITMENT 문제입니다. Level 2난이도의 문제입니다.
3. 생각한 것들(문제 접근 방법)
- 재귀함수를 잘 구현할 수 있는 지 묻는 문제입니다.
- 과정을 잘 따라가면 어렵지 않습니다.
- checkstr() 함수는 ‘올바른 괄호인지 확인하는 함수입니다.’
- makestr() 함수는 ‘균형잡힌 괄호 2개로 나눠주는 함수입니다.’
- reversestr()함수는 ‘괄호들의 방향을 바꿔주는 함수입니다.’
- solv()함수는 기본적인 재귀함수입니다.
4. 접근 방법을 적용한 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
def checkstr(p):
li = []
# stack을 통해 p를 돌면서 괄호의 짝을 확인합니다.
for i in range(len(p)):
if p[i] == "(":
li.append("(")
else :
if len(li) == 0 :
return False
li.pop()
return True
def makestr(p):
idx = 0
left = 0
right = 0
# p를 돌면서 '(' 갯수와 ')' 갯수가 맞는 최소 구간을 확인합니다.
while idx <len(p):
if p[idx] == "(" :
left += 1
else :
right += 1
if left == right :
break
idx+=1
return p[:left+right] , p[left+right : ]
def reversestr(p) :
temp = ""
for i in range(len(p)):
if p[i] =="(":
temp+=")"
else :
temp+="("
return temp
def solv(p):
if p =="":
return ""
if checkstr(p):
return p
u,v = makestr(p)
#print("u : ", u,"v : ",v)
if checkstr(u) :
resv = u + solv(v)
return resv
else :
temp = "("
temp += solv(v)
temp += ")"
u = u[1:-1]
u = reversestr(u)
temp+= u
return temp
def solution(p):
p = solv(p)
return p
5. 결과
필요시. c++ 짜드리겠습니다.
This post is licensed under CC BY 4.0 by the author.