X + Y = X | Y
검출기X
가 주어 질 때, X+Y = X|Y
가 되는 수식의 y 를 찾기((((( ))()
.. 가 나오는 괄호 문제는 대표적으로 stack으로 푸는 것이다.(()()()(
괄호문을 최소한의 변경으로 바꾸어라 문제stack: <list>
로 받았다 가정한다.stack[0]
은 (
이어야한다.stack[-1]
은 )
이어야한다.bal=0
for i in range(0,len(stack)):
if stack[i] == '(':
bal+=1
elif stack[i] == ')':
bal-=1
순차 탐색 중 bal<0
이 된다는 것은 (
가 앞에 없는데 )
가 먼저 있는 것이므로 '바꾸어줘야하는 상황'이다.
따라서 순차 탐색 중 bal<0
이되면 (
로 바꾸자!!!
bal=0
for i in range(0,len(stack)):
if stack[i] == '(':
bal+=1
elif stack[i] == ')':
bal-=1
if bal < 0:
stack[i]='(' # 강제로 ) -> ( 로 바꾼다.
bal=1 # ( 로 바꿨으니 밸런스는 1이된다.
bal=0
이면 완벽하게 정렬되었다.bal>0
인 경우는 ((((
같이 (
괄호가 더 많이 남아 있고 종료되었다는 것이다.bal/2
만 조정하면 (())
로 bal=0
으로 완성된다.예를 들어, 0<1<3<><>><4<7<><>><>>><2<5<><8<><>>><6<><>>>
로 되어 있는 조직도를 분석하면 아래와 같은 형태가 된다