[백준] 10799번 쇠막대기

거북이·2023년 7월 6일
0

백준[실버2]

목록 보기
64/81
post-thumbnail

💡문제접근

  • 문제 예시를 직접 그려보면서 어떻게 유도가 되는지를 확인한 후 결론을 도출하는 코드를 작성했다.

  • (는 그냥 스택에 넣는다

  • )가 나오면 두가지 경우로 나누어진다.

  • )가 나오고 이전 문자가 (이었다면 해당 파트는 레이저이다. 따라서 현재 stack에 쌓인
    (개수(=쇠막대기 개수)만큼 개수를 더해준다.

  • )가 나오고 이전 문자도 )이었다면 쇠막대기 끄트머리에 대한 표현이다. 따라서 하나가 나올때마다 하나씩만 추가해주면 된다.

💡코드(메모리 : 32472KB, 시간 : 64ms)

import sys
input = sys.stdin.readline

stack = []
bar = list(input().strip())
answer = 0

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

💡소요시간 : 28m

0개의 댓글