[백준/Python] 10799번 - 쇠막대기

Sujin Lee·2022년 9월 1일
0

코딩테스트

목록 보기
101/172
post-thumbnail
post-custom-banner

문제

백준 10799번 - 쇠막대기

해결 과정

  • 스택을 이용하여 풀기
  • (인 경우 stack에 쌓기
  • )인 경우
    • )) -> 막대기 끝 -> answer에 쇠막대기 마지막 끝 조각(1)을 더해주기
    • () -> 레이저 -> stack의 갯수를 answer에 더해주기

시행착오

  • ) 나올 때 두 가지의 경우로 나누어서 생각해야하는데 1가지만 생각했음
  1. 레이저
  2. 쇠막대기의 끝
import sys

bar = sys.stdin.readline()

stack = []
answer = 0

for i in bar:
  if i == ')':
    if stack[-1] == '(':
      stack.pop()
      answer += len(stack)
  else:
    stack.append(i)

print(answer)

풀이

import sys

bar = sys.stdin.readline()

stack = []
answer = 0

for i in range(len(bar)):
  if bar[i] == ')':
    # 레이저인 경우
    if bar[i-1] == '(':
      stack.pop()
      answer += len(stack)
    # 쇠막대기의 끝인 경우
    else:
      stack.pop()
      answer += 1
  else:
    stack.append(bar[i])

print(answer)
profile
공부한 내용을 기록하는 공간입니다. 📝
post-custom-banner

0개의 댓글