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
|
def recur(string):
# 숫자찾기
a = -1
for i in range(len(string)):
if ord('0')<= ord(string[i]) <=ord('9'):
a = int(string[i])
break
if a == -1:
return string
# 최종 괄호 찾기
start = 0
end = 0
count = 0
for i in range(len(string)):
if string[i]=="(":
count +=1
if count ==1:
start =i
if string[i]==")":
count -=1
if count ==0:
end = i
break
ret = string[start+1: end]*a
if start>1:
ret = string[:start-1]+ ret
if end < len(string)-1:
ret = ret + string[end+1:]
return recur(ret)
A = ["3(mj2(bj)3(hi))", "mjbjbjhihihimjbjbjhihihimjbjbjhihihi"]
B = ["5(a)2(b)1(c)", "aaaaabbc"]
C = ["2(a2(b)3(c))", "abbcccabbccc"]
print(recur(A[0]) == A[1])
print(recur(B[0]) == B[1])
print(recur(C[0]) == C[1])
|
cs |
'프로그래밍' 카테고리의 다른 글
[백준 1931 파이썬 ] Greedy Algorithm 2 - 회의실 배정 (0) | 2020.07.09 |
---|---|
[백준 11047 파이썬 ] Greedy Algorithm 1 - 동전 0 (0) | 2020.07.08 |
State Machine Diagram 에 대한 설명 (0) | 2020.07.07 |
OCL(The Object Constraint Language) 예제를 기반으로한 설명 (0) | 2020.07.07 |
[백준 11054 가장 긴 바이토닉 부분수열] 파이썬 풀이 (0) | 2020.07.05 |