문제
10799번: 쇠막대기
여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저
www.acmicpc.net
알고리즘
- 반복문을 통해 모든 괄호를 탐색한다.
- "(" 괄호는 스택에 추가한다.
- 이전 괄호가 ")" 라면 막대기에 마지막 부분을 레이저로 자른 것으로 +1 해준다.
- 현재 괄호가 ")"라면 레어저의 앞에 막대기의 개수를 모두 한 번씩 자른 것으로 스택의 길이를 더해준다.
코드
import sys
n = list(map(str, sys.stdin.readline().strip()))
stack = []
res = 0
# 모든 괄호를 탐색한다.
for i in range(len(n)):
if n[i] == "(":
stack.append("(")
# 이전 괄호가 ")"라면 막대기에 마지막 부분을 자른 것으로 +1을 해준다.
elif n[i - 1] == ")":
stack.pop()
res += 1
# 현재 괄호가 ")"라면 레이저의 앞에 막대기의 개수를 한번씩 자른 것으로 스택의 길이를 더해준다.
else:
stack.pop()
res += len(stack)
print(res)
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 17299번(파이썬): 오등큰수 (0) | 2021.09.10 |
---|---|
[baekjoon] 백준 17298번(파이썬): 오큰수 (0) | 2021.09.09 |
[baekjoon] 백준 10951번(파이썬): A+B - 4 (0) | 2021.09.07 |
[baekjoon] 백준 1110번(파이썬): 더하기 사이클 (0) | 2021.09.07 |
[baekjoon] 백준 17413번(파이썬): 단어 뒤집기 2 (0) | 2021.09.07 |