코테준비/문제풀이

[Python] 프로그래머스 쇠막대기

jaeni 2020. 7. 12. 15:47
반응형

 

def solution(arng):
    bar = 0
    stack = []
    arng = arng.replace("()","L")
    
    for i in arng:
        if i == '(':
            stack.append('(')
            bar += 1 #이거 안하면 안됨 중요.
        elif i == ')':
            stack.pop()
        else:
            bar += len(stack)
    return bar

고민 했던 건 스택을 넣고 뺄때 레이저랑 막대랑 구분하는 법.

arng = arng.replace("()","L")

replace를 통해 아예 레이저를 구분하고 시작한다.

그런 다음 For문을 돌리면서, "("만 넣어주고 아니면 stack에서 pop한다.

그리고 Laser를 만날경우 현재 stack 내에 있는 막대 수만큼 더 해준다

 

첨에 replace를 안하면 if와 else가 정말 많아지기때문에

처음부터 바꿔주고 시작하는게 좋음

 

 

 

programmers.co.kr/learn/courses/30/lessons/42585

 

코딩테스트 연습 - 쇠막대기

여러 개의 쇠막대기를 레이저로 절단하려고 합니다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자릅니다. 쇠막대기와 레�

programmers.co.kr

반응형