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)
'알고리즘 > 백준' 카테고리의 다른 글
BOJ : 11866. 요세푸스 문제 0 (python) (0) | 2021.12.11 |
---|---|
BOJ : 4889. 안정적인 문자열 (python) (0) | 2021.12.11 |
BOJ : 1026. 보물 (python) (0) | 2021.12.08 |
BOJ : 1246. 온라인 판매 (python) (0) | 2021.12.08 |