알고리즘 쇠막대기(stack) - 파이썬

DevSmiler·2020년 4월 3일
0
post-thumbnail

쇠 막대기 문제(파이썬/stack)

오늘 풀이를 해보려고 하는 문제는 쇠막대기 문제입니다.
레이저로 쇠 막대기를 잘려서 몇 개의 쇠막대기가 나오는지 보는 문제입니다.
위의 결과 값은 7이 되게 됩니다.

input : (( ( ) ( ) ) ( ) )
output : 7

문제 해설

문제 풀이

  1. 괄호가 open 되어있으면 계속 스택에 추가합니다.
  2. '()'를 만나면 스택 사이즈 만큼, 막대기가 생깁니다.
    즉, answer+=size of stack
  3. '()'로 끝나고, 다시 ')'를 만난다면, 그때마다 +1 씩 해줍니다.

source code

def solution(arrangement):
    stack = []
    answer = 0
    end=''
    for element in arrangement:
        if element == '(':
            stack.append(element)
            end=element
        else :
            if end=='(':
                stack.pop()
                answer+=len(stack)
                end=')'
            elif end==')':
                stack.pop()
                answer+=1
                end=')'    
    return answer



print(solution('((()())())'))
profile
A ship is always safe at the shore, but that is not what it is built for - Albert Einstein

0개의 댓글