꿈꾸는 개발자의 블로그
[백준] Python - 10799 쇠막대기 본문
풀고나니까 쉬운데.. 처음에 어떻게 풀어야 하는지 아이디어가 생기지 않아서 너무 어려웠다. 앞으로 많은 문제를 풀어서 여러 가지 접근 방법에 대한 아이디어를 얻어야겠다고 생각했다 ㅠㅠ
문제 링크
https://www.acmicpc.net/problem/10799
문제 풀이
- "(" 라면, 스택에 추가한다.
- ")" 인데 앞선 인덱스의 값이 "(" 였다면, 레이저이므로 그동안 스택에 쌓인 개수만큼 result에 더한다.
- 그 외의 경우는 ")" 다음에 ")"이 온 경우일 것이고, 이 때는 막대가 끝난 시점이고 result에 1을 더한다.
전체 코드
str = input().strip()
stick = []
result = 0
for i in range(len(str)) :
if str[i] == '(' :
stick.append('(')
else :
# 레이저
if str[i-1] == '(' :
stick.pop()
result += len(stick)
else :
stick.pop()
result += 1
print(result)
728x90
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] Python - 2493 탑 (0) | 2022.11.20 |
---|---|
[백준] Python - 2800 괄호 제거 (0) | 2022.11.19 |
[백준] Python - 1874 스택 수열 (0) | 2022.11.17 |
[백준] Python - 20437 문자열 게임 2 (0) | 2022.09.20 |
[백준] Python - 1316 그룹 단어 체커 (0) | 2022.09.19 |
Comments