반응형
리뷰
스택을 활용한 문제이다.
문제 풀이
- 문자열을 받아주고 스택을 담을 빈 리스트, 정답을 출력한 result 변수를 0으로 초기화 해준다.
- 각 문자열을 참조하여 현재 문자열이 (일 경우 스택에 추가한다.
- 현재 문자열이 )인 경우 이전 문자열이 (인지 )인지에 따라 다르게 적용해준다.
- 이전 문자열이 (일 경우 스택에서 마지막 인자를 뽑고 스택의 길이만큼 result에 더해준다.
- 이전 문자열이 )일 경우 스택에서 마지막 인자를 뽑고 1만큼 result에 더해준다.
- result를 출력해 준다.
참고 사항
- ) 이전 문자열이 (인 경우는 레이저를 발사하는 경우다. 즉, (를 하나 뽑고 스택의 길이만큼 더해주면 된다.
- ) 이전 문자열이 )인 경우는 막대기의 끝인 경우다. 즉, (를 하나 뽑고 1만큼 더해주면 된다.
정답 코드
def q10799():
# 백준 10799번 쇠막대기 파이썬
s = input()
stack = []
result = 0
for i in range(len(s)):
if s[i] == '(':
stack.append(s[i])
else:
if s[i - 1] == '(':
stack.pop()
result += len(stack)
else:
stack.pop()
result += 1
print(result)
q10799()
728x90
반응형
'알고리즘 공부 > 파이썬(Python)' 카테고리의 다른 글
SWEA 1220번 D3 [S/W 문제해결 기본] 5일차 - Magnetic 파이썬 (0) | 2024.07.08 |
---|---|
백준 13335번 트럭 파이썬 (0) | 2024.07.08 |
백준 1550번 16진수 파이썬 (0) | 2024.07.07 |
백준 17413번 단어 뒤집기 2 파이썬 (0) | 2024.07.07 |
백준 2167번 2차원 배열의 합 파이썬 (0) | 2024.07.07 |