백준 - 10773 (Python) - 제로

2923 단어 algorithmalgorithm

백준 10773

제로

처음 문제 읽었을 땐 무슨 소린가 했는데, 입력받은 숫자들의 리스트를 스택으로 쌓고 0이 입력될 경우 그 전에 마지막으로 입력된 값을 하나 지워주는 방식으로 풀이하면 된다.

참고로 스택은 가장 나중에 들어온 자료가 가장 먼저 처리되는 LIFO(Last-In-First-Out) 자료구조이다.

n = int(input())
z = []
for i in range(n):
    num = int(input())
    if num == 0:
        z.pop()
    else:
        z.append(num)
print(sum(z))

마지막에 들어온 값을 꺼내기 위해 사용하는 pop()은 리스트에서 맨 마지막 요소를 출력하면서 그 요소를 리스트에서 삭제하는 함수다.

하지만 파이썬에서느 추가적으로 특정 위치에 있는 요소에 대해서 pop함수를 사용할 수도 있다.

pop(x) 와 같이 pop함수 뒤에 하나의 인자를 넣어주면 x번째 인덱스에 있는 요소를 꺼낼 수 있다. 뒤에서 x번째 값을 꺼내고 싶다면 pop(-x)를 사용한다.

문제는 num(인풋값)이 0이면 리스트 마지막 값을 삭제, 그렇지 않으면 리스트에 num을 추가하는 코드를 짜면 끝.

파이썬 리스트 값 삭제

종류내용
clear()모든 요소 삭제
pop()지정한 위치 값을 삭제하고 삭제한 값 취득
remove()지정한 위치 값과 같은 값을 검색후 처음 값을 삭제
del위치 또는 범위를 지정 삭제
  • del은 함수가 아니라 예약어이다. 그렇기 때문에 함수와 같이 사용할 수 없다.
    사용방법은 del 뒤에 한 칸을 띄고서 'del array [인덱스]' 형태로 사용한다.

좋은 웹페이지 즐겨찾기