스택을 구현하고 사용해 봅시다.
Java / Python
가장 최근에 쓴 수를 지우는 문제
이번 문제는 자바의 경우, 스택 클래스를 이용, 파이썬은 리스트를 이용해 간단하게 작성했습니다. 0을 입력받으면 저장 받은 top 원소를 지우고 스택에 있는 수의 합을 출력하는 문제입니다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Integer> stack = new Stack<Integer>();
int K = Integer.parseInt(br.readLine());
for(int i = 0; i < K; i++) {
int num = Integer.parseInt(br.readLine());
if(num == 0) { // 0이면 스택에 저장된 top 원소를 지우기
stack.pop();
}
else {
stack.push(num);
}
}
int sum = 0;
for(int i : stack) {
sum += i;
}
System.out.println(sum);
}
}
import sys
K = int(sys.stdin.readline())
stack = []
for _ in range(K):
num = int(sys.stdin.readline())
if num == 0:
stack.pop()
else:
stack.append(num)
print(sum(stack))