리스트 끝에 넣고 끝에서 꺼내요
리스트와 함수를 배웠어요. append 는 끝에 값을 추가해요. pop()은 끝의 값을 제거하고 그 값을 반환해요.
stack = []
stack.append(4)
stack.append(7)
taken = stack.pop()
taken은 7이고 stack에는 [4]가 남아요. 마지막에 넣은 것을 먼저 꺼내는 순서를 스택이라고 해요. 그림에서 꺼내기 전후의 차이를 확인해요.
빈 상태에서는 꺼내지 않아요
빈 리스트에서 pop 하면 꺼낼 값이 없어 오류가 나요. len(stack) > 0을 먼저 확인해요. pop()은 리스트를 바꾸는 동시에 꺼낸 값을 주므로 나중에 그 값을 다시 쓸 수 있어요.
예제에서 7을 꺼낸 뒤 4를 추가하면 stack은 [4, 4]예요. 중복 값도 서로 다른 칸이에요. 아래 과제는 양수 입력이면 넣고 0이면 마지막 값을 꺼내요. 꺼낸 값은 결과 합계에 포함하지 않아요. 모든 명령 후 남은 리스트만 순회해요.
직접 풀어봐요
명령을 순서대로 처리해요. 양수값은스택끝에 넣고, 0은 끝의 값을 하나 꺼내요. 빈스택에서 0이 오면 아무 일도 하지 않아요. 마지막에 남은 값의 합계를 출력해요.
첫 줄 명령 수 m(0100), 이후 m 줄에 명령(01000)이에요. 출력은 최종 합계예요.
예 시 1: 명령[4, 7, 0, 2] → 6. 7을 꺼내고 4·2가 남아요.
예 시 2: 명령[3, 0, 9] → 9예요.
예시 입력
4 4 7 0 2
예상 결과
6
예시 입력
3 3 0 9
예상 결과
9
핵심 개념
stack-queue: append와 pop으로 리스트 끝에서 넣고 꺼내는 스택 순서를 구현하고 빈 상태를 확인해요.