TIL) 10799 쇠막대기

Mongle·2020년 12월 24일
0

이 글은,
1. 미래의 내가 다시 이 문제를 풀고자 할 때 과거의 내가 어떻게 문제를 해결했었는지 알려주기 위해서
2. 같은 문제를 풀고 있는 사람에게 아이디어를 제공하기 위해서

작성되었습니다.


🐹 쇠막대기

Week02 TEST 두 번째 문제
백준 10799 쇠막대기 : https://www.acmicpc.net/problem/10799

💡 아이디어

  • 괄호 문제는 대부분 스택으로 해결하는 것 같다.
  • 다른 괄호 문제들과 같이 '('를 스택에 넣어준다.
  • ')'가 나오면 두 가지 경우로 나뉜다.
  • 입력값의 바로 앞에 '('가 있으면 레이저이고
  • '('가 없으면 막대기의 끝부분이다.
  • 레이저인 경우 지금까지 스택에 쌓여있는 '('의 개수(=살아있는 막대기의 수)를 더해주고
  • 레이저가 아닌 경우는 막대기의 끝부분(=1)을 더해주면
  • 스택이 비었을 때 전체의 막대기 값이 출력된다.

🎡 제출한 코드

brackets = input()
stack = []
count = 0

for i in range(len(brackets)):
    if brackets[i] == "(":
        stack.append('(')
    else:
        # 이전 괄호가 닫는 괄호이면 레이저
        if brackets[i-1] == '(':
            count += len(stack)-1
            stack.pop()
            # 아니면 막대기
        else:
            count += 1
            stack.pop()
print(count)
profile
https://github.com/Jeongseo21

0개의 댓글