[백준] 쇠막대기 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개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN