문제 링크
https://www.acmicpc.net/problem/10799
10799번: 쇠막대기
여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저
www.acmicpc.net
문제
문제 풀이
문제 이해가 안되어서 조금 어려웠던 문제..
스택으로 풀이하면 해결이 된다.
입력받은 문자열을 list로 저장하고 하나씩 검사하여
(가 나올 경우 스택에 그냥 append해준다.
)가 나올 경우는 두 가지로, 조건문을 사용해 검사해준다.
1. 바로 앞에 (가 나올 경우 => 레이저이므로, 지금까지 스택에 저장된 (의 개수를 result에 더해준다.
2. 바로 앞에 )가 나올 경우 => 쇠막대기의 끝을 표현하는 것이다. result에 1만 추가해주면 된다.
inp = list(input())
result = 0
st = []
for i in range(len(inp)):
if inp[i] == '(':
st.append('(')
else:
if inp[i - 1] == '(':
st.pop()
result += len(st)
else:
st.pop()
result += 1
print(result)
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 10866 덱 (파이썬 python) (0) | 2022.01.23 |
---|---|
[백준] 10845 큐 (파이썬 python) (0) | 2022.01.23 |
[백준] 9012 괄호 (파이썬 python) (0) | 2022.01.23 |
[백준] 10828 스택 (파이썬 python) (0) | 2022.01.23 |
[백준] 11004 K번째 수 (파이썬 python) (0) | 2022.01.21 |