본문 바로가기
알고리즘/백준

BOJ : 10799. 쇠막대기 (python)

by newjp 2021. 12. 10.

BOJ 10799 문제 링크

 

10799번: 쇠막대기

여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저

www.acmicpc.net

풀이

()는 레이저이므로 ()를 다른 문자로 replace 하여 바꿔주었다.

만약 * 이면 레이저이므로 스택에 들어있는 막대기가 한번 잘리므로 res에 len(stack)을 더해 줌.

stack에는 (밖에 없으므로 )가 들어왔을 때에는 하나의 막대기로 생각하여 pop해준다.

코드

#10799. 쇠막대기
iron = input().replace('()','*')
stack, res = [], 0
for i in iron:
    if i == '(':
        stack.append(i)
    elif i == '*':
        if stack:
            res += len(stack)
    elif i == ')':
        stack.pop()
        res += 1
print(res)