인프런 커뮤니티 질문&답변

나호님의 프로필 이미지
나호

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

2. 쇠막대기(스택)

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

작성

·

328

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

나호님의 프로필 이미지
나호
질문자

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

나호님의 프로필 이미지
나호

작성한 질문수

질문하기