https://www.acmicpc.net/problem/10773
10773번: 제로
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경
www.acmicpc.net
해석 및 팁
이 문제는 Stack의 기본만 알고 있으면 쉽게 풀 수 있습니다. 0을 입력받는 경우에만 stack.pop()을 해주고 나머지는 stack에 저장하면 됩니다. 최종적으로 남아있는 값들을 더해서 출력해 주면 됩니다.
Java 코드
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Stack<Integer> stack = new Stack<>();
int sum = 0;
int k = sc.nextInt();
for(int i = 0; i < k; i++) {
int num = sc.nextInt();
if(num == 0) stack.pop();
else stack.push(num);
}
while(!stack.isEmpty()) sum += stack.pop();
System.out.println(sum);
}
}
'백준' 카테고리의 다른 글
백준 2164 카드2(Java) (0) | 2023.01.25 |
---|---|
백준 10845 큐(Java) (0) | 2023.01.25 |
백준 1018 체스판 다시 칠하기(Java) (0) | 2023.01.25 |
백준 11047 동전 0(Java) (2) | 2023.01.25 |
백준 11399 ATM(Java) (1) | 2023.01.25 |