우선 입력 문자열에서 여는 괄호와 닫는 괄호가 인접한 쌍으로 ' ( ) ' 존재하면 레이저이고 그렇지 않으면 쇠막대기이다. 쇠막대기들이 레이저로 잘리게 되면 잘리게 되는 쇠막대기의 수만큼 새로운 쇠막대기 조각이 생긴다.
입력 문자열을 왼쪽부터 검사할 때 여는 괄호 ' ( ' 를 만났다면 쇠막대기의 시작 여는 괄호 이거나 레이저의 여는 괄호 일 수 있다. 다음 문자를 검사하기 전까진 쇠막대기인지 레이저인지 판별할 수 없으므로 다음 문자가 닫는 괄호 일시 바로 전 문자를 검사하여 레이저인지 판별하기 위하여 스택에 push 해주고 쇠막대기의 수를 우선 +1 해준다. (14~18행)
입력 문자열을 왼쪽부터 검사하다가 닫는 괄호 ' ) '를 만났다면 쇠막대기의 끝 닫는 괄호 이거나 레이저의 닫는 괄호 일수가 있는데 이때 그전의 문자열을 순서대로 넣어둔 스택을 pop 하여 바로 전의 문자가 여는 괄호였다면 레이저이고 아니라면 쇠막대기라고 볼 수 있다.
닫는 괄호가 레이저라면 우선 바로 전의 여는 괄호를 검사할 때 쇠막대기라고 생각하고 쇠막대기의 수를 +1 해줬기 때문에 -1 해준다. (23행) 그 후 쇠막대기의 수만큼 결과를 나타낼 num 변수에 더해주고 다음에 검사할 문자를 쇠막대기인지 레이저인지 제대로 판별하기 위해 스택에 push 해준다. (24~25행)
닫는 괄호가 쇠막대기의 끝이라면 num의 값을 +1 해주고 쇠막대기의 수를 -1 해준다. (28~31행)