My Code
 
def Ck_Laser(arr): 
    if arr[0]=='(' and arr[1]==')': 
        return True 
    else: 
        return False 
     
def Ck_in_line(Laser_num): 
    if len(Laser_num)>0: 
        return True 
    else: 
        return False
 
def solution(arr): 
    ans=0 
    arr=list(arr) 
    Laser_num=[] 
     
    while arr: 
        ck_L=Ck_Laser(arr) 
        ck_in=Ck_in_line(Laser_num) 
#         print(arr) 
#         print(Laser_num) 
#         print('ans:{}'.format(ans)) 
#         print(ck_in) 
        if ck_in==False: #현재 막대기 밖에 있음 
            if ck_L==True: #레이저 만나면 
                for i in range(2): 
                    arr.pop(0) #걍 레이저 제거 
            else: 
                arr.pop(0) #막대기 시작 
                Laser_num.append(0) #조각 수 세기 위한 공간 할당 
        else: #현재 막대기 안에 있음 
            if ck_L==True: #레이저 만나면 
                #현재 지나고 있는 막대기의 레이저 수 전부에 +1 
                for i in range(len(Laser_num)): 
                    Laser_num[i]+=1 
                for i in range(2): 
                    arr.pop(0) #레이저 제거 
            elif arr[0]=='(': 
                arr.pop(0) #막대기 시작 
                Laser_num.append(0) #조각 수 세기 위한 공간 할당 
            elif arr[0]==')': 
                arr.pop(0) 
                ans+=(Laser_num.pop()+1) 
    return ans
 
Better Code
 
def solution(arrangement): 
    answer = 0 
    arrangement = arrangement.replace("()","L") 
    stack = [] 
    for idx, c in enumerate(arrangement): 
        if c == '(': 
stack.append('(')
            answer += 1 
        elif c == ')': 
stack.pop()
        else: 
            answer += len(stack)  #스택길이가 막대기 개수이고, 한번 레이저마다 막대기 개수만큼 조각늘어남
return answer