[백준] 쇠막대기 17413번 파이썬 Python 자료구조

Jeony·2021년 10월 24일
0

백준

목록 보기
10/25
post-thumbnail

📌문제 접근

이 문제는 stack으로 풀 수 있다.
괄호를 stack에 넣고 빼면서 쇠막대기의 잘리는 수를 더할 수 있다.

📌내가 작성한 코드

bar_laser = list(input())
result = 0
stack = []

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

print(result)

📌풀이

  1. '('는 그냥 스택에 넣는다
  2. ')'가 나오면 두가지 경우로 나누어진다.
  3. ')'가 나오고 이전 문자가 '('이었다면 해당 파트는 레이저이다. 따라서 현재 stack에 쌓인 '('개수(=쇠막대기 개수)만큼 개수를 더해준다.
  4. ')'가 나오고 이전 문자도 ')'이었다면 쇠막대기 끄트머리에 대한 표현이다. 마지막 절단되는 쇠막대기이므로 나올때마다 하나씩만 추가해주면 된다.
profile
알고리즘으로 문제를 해결하다가 포기함

0개의 댓글