문제 링크
https://www.acmicpc.net/problem/10799
문제
문제 풀이
문제 이해가 안되어서 조금 어려웠던 문제..
스택으로 풀이하면 해결이 된다.
입력받은 문자열을 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 |