• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

stack.pop 을 공통으로 먼저하면 위험하지않을까요?

22.06.27 12:52 작성 조회수 234

0

input.txt 를 기준으로 stack.pop() 을 공통으로 먼저하게 된다면 i 가 1 일때 pop 하기 이전에 stack 에는 '(' 하나만 있습니다.
그런데 pop 을 먼저 하고서 s[i-1] 로 접근하게 된다면
stack 이 비어있기 때문에 에러가 나야하지 않나 싶습니다.
물론 강의에서는 에러가 나지 않았기 때문에 이해가 잘 가지 않네요.
실제로 제가 짠 코드에서는 s[i-1] 로 접근하는게 아니라 그냥 s[-1] 로 접근하고 있는데 에러가 발생하네요. 다른 코드는 동일합니다.
아래는 저의 코드입니다.
for x in line :
    if x == '(' :
        stack.append(x)
    else :
        stack.pop()
        if stack[-1] == '(' :
            piecesCnt += len(stack)
        else :
            piecesCnt += 1
print(piecesCnt)

답변 1

답변을 작성해보세요.

0

나호님의 프로필

나호

질문자

2022.06.29

아 제가 변수를 잘못 적었네요. stack.pop 을 하고서는 s[i-1] 을 해야하는데 stack[-1] 을 했네요.