View
https://www.acmicpc.net/problem/10773
📚 문제
재현이는 잘못된 수를 부를 떄마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다.
재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다.
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다. 정수가 "0"일 경우에 지울 수 있는 수가 있음을 보장할 수 있다.
예제 입력 1 | 예제 출력 1 |
4 3 0 4 0 |
0 |
10 1 0 0 0 0 6 |
7 |
📝 문제 해결
입력받은 수가
- 0이 아닐 경우 stack에 해당 수를 추가 (push)
- 0일 경우 stack에서 가장 위에 있는 수를 제거 (pop)
입력이 끝난 뒤 스택에 저장된 값들의 합을 출력해준다.
💻 코드
import java.util.*;
public class BOJ10773{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
Stack<Integer> stack = new Stack<Integer>();
for(int i=0; i<k; i++){
int n = sc.nextInt();
if(n == 0) stack.pop();
else stack.push(n);
}
int result = 0;
while(!stack.isEmpty()) result+=stack.pop();
System.out.println(result);
}
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[동적 계획법] 백준 1149번 RGB거리(Java) (0) | 2022.11.16 |
---|---|
[그리디] 백준 4796번 캠핑 (Java) (0) | 2022.11.14 |
[그리디] 백준 10610번 30(Java) (0) | 2022.11.10 |
reply