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


코드
inp = []
stack = []
cnt = 0
ans = 0
inp = list(input())
for i in inp:
if i == '(':
stack.append(i)
cnt = 0
elif i == ')':
stack.pop()
if cnt == 0:
if len(stack) > 0:
ans += len(stack)
else:
ans+=1
cnt = 1
print(ans)
설명
'('일 때는 스택에 집어넣고 ')'가 나오면 pop을 해주었다. '(' 다음에 바로 ')' 가 나오면 스택에 있는 '(' 의 개수 만큼 ans에 더해준다.
cnt 변수는 레이저와 쇠막대기를 구분하기 위해 써주었다. cnt 가 0일때 ')' 가 오면 레이저, cnt가 1일 때 ')' 가 오면 쇠막대기로 인식하게 했다.
현재 ans 값을 보면 레이저가 마지막으로 지나간 이후의 조각은 아직 더해주지 않았기 때문에 cnt 가 1일 때 ')' 가 와서 쇠막대기의 오른쪽 끝이 나오게 되면 ans에 1을 더해주었다.
반응형
'알고리즘 > 자료구조' 카테고리의 다른 글
[백준][Python] 2504번 괄호의 값 (0) | 2022.02.10 |
---|---|
[백준][Python] 1966번 프린터 큐 (0) | 2022.02.08 |
[백준][Python] 1935번 후위 표기식2 (0) | 2022.02.07 |
[백준][Python] 1874번 스택 수열 (0) | 2022.02.07 |
[백준][Python] 10866번 덱 (0) | 2022.02.04 |
댓글