(start_idx + Move) % N = 최종_배열_idx
쌍이되는 연산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<><>>> 로 되어 있는 조직도를 분석하면 아래와 같은 형태가 된다

