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

이유리님의 프로필 이미지

작성한 질문수

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

2. 쇠막대기(스택)

쇠막대기 질문

20.03.11 23:09 작성

·

318

1

쇠막대기문제 질문

안녕하세요 강의 잘 보고있습니다. 감사합니다

쇠막대기문제를 풀때 다음 코드는 예제1번(답:17)만 맞고 틀려서요

for x in p 와 for i in (len(p))의 차이 인거 같은데 잘 몰라서 질문드립니다. 

p=input()
stack=[]
res=0 # 잘려진 개수를 넣을곳

for x in p:
    if x=='(':
        stack.append(x)
    else:
        if stack[-1]=='(':
            stack.pop()
            res+=len(stack)
        else:
            #막대기 끝지점
            stack.pop()
            res+=1

print(res)

답변 3

3

김태원님의 프로필 이미지
김태원
지식공유자

2020. 03. 12. 19:00

코딩테스트를 준비하시는 분 같아서 말씀드립니다. 이런 상황에서는 본인이 간단한 입력예제들을 만들면서 최소 1시간에서 2시간 정도 디버그를 하면서 본인의 에러를 클리어해야 합니다. 이 공부가 제일 중요합니다. 이 과정을 통해서 문제해결력이 길러집니다 그리고 실제 시험장에서 겪을 일입니다. 요즘은 입력예제를 하나밖에 안주는 기업들이 많습니다. 내가 짠 코드를 스스로 시험장에서 검증해보아야 합니다. 이게 당락을 좌우합니다. 2시간 정도 디버그를 했는데도 안되시면 저에게 질문하세요^^

닫힌 괄호를 만났을 때 stack[-1]의 값은 닫힌 괄호와 한 쌍을 이루는 여는 괄호입니다.

닫힌 괄호를 만났을 때 stack[-1]을 참조하면 안되는 이유입니다. 더 얘기를 해드리자면 스택에는 여는 괄호만 존재합니다. 막대기 끝지점 계산 부분을 생각해 보세요.

0

고무오리디버깅님의 프로필 이미지

2021. 09. 30. 14:20

소름 ㅋㅋ내가 이렇게 풀었는데 다른 풀이법 볼려다가 나랑 똑같은 코드발견 ㅋㅋㅋㅋ

0

이유리님의 프로필 이미지
이유리
질문자

2020. 03. 12. 22:22

와 감사합니다. 솔직히 코딩테스트 준비에 어려움을 많이 느끼고 있어요. 그래도 포기하지 않고 조언대로 열심히 하겠습니다.

다시 한번 감사해요