백준 - 제로 [10773]
문제
(요약)
- 잘못된 수를 입력할때 0을 말하면 최근 입력한 수 삭제
- 모든 수를 받아 그 수들의 합 구하기
입력
(요약)
- 잘못된 수를 입력할때 0을 말하면 최근 입력한 수 삭제
- 모든 수를 받아 그 수들의 합 구하기
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000)
이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다.
정수가 "0"일 경우에 지울 수 있는 수가 있음을 보장할 수 있다.
출력
재민이가 최종적으로 적어 낸 수의 합을 출력한다. 최종적으로 적어낸 수의 합은 -1보다 작거나 같은 정수이다.
풀이
입력을 받을 때마다 스택에 넣고 0을 입력 받으면 스택에서 수를 뺀다(삭제) (3번째 입력 조건에 의해서 처음에 0이 올 수 없음이 보장되어 스택이 비어있는지 확인할 필요가 없다.)
이후 스택에 남아있는 수의 합을 구하면 해결이 된다.
소스
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
Stack<Integer> s = new Stack<>();
while(k-- > 0) {
int temp = sc.nextInt();
if(temp == 0) {
s.pop();
}else
s.push(temp);
}
int sum = 0;
while(!s.isEmpty()) {
sum += s.pop();
}
System.out.println(sum);
}
}
Author And Source
이 문제에 관하여(백준 - 제로 [10773]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@minuk1236/백준-제로-10773
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
Stack<Integer> s = new Stack<>();
while(k-- > 0) {
int temp = sc.nextInt();
if(temp == 0) {
s.pop();
}else
s.push(temp);
}
int sum = 0;
while(!s.isEmpty()) {
sum += s.pop();
}
System.out.println(sum);
}
}
Author And Source
이 문제에 관하여(백준 - 제로 [10773]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@minuk1236/백준-제로-10773저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)