728x90
https://www.acmicpc.net/problem/10773
스택문제입니다.
힌트를 보시면 입력된 정수를 계속 쌓습니다.
0이 입력이되면 제일 최근에 쌓인 정수를 지웁니다.
그렇게 마지막 까지 남은 숫자들을 모두 더해서 출력하는 문제입니다.
전체 코드입니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
Stack<Integer> stack = new Stack<>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
for (int i=0; i<N; i++){
int num = Integer.parseInt(br.readLine());
if (num != 0){
stack.push(num);
} else {
stack.pop();
}
}
int size = stack.size();
int sum = 0;
for (int i=0; i<size; i++){
sum = sum + stack.pop();
}
System.out.println(sum);
}
}
Stack<Integer> stack = new Stack<>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
스택을 만들어줍니다.
입력은 BufferedReader로 받겠습니다.
첫 번째 줄에 N개의 정수를 받기 위해 변수를 만듭니다.
for (int i=0; i<N; i++){
int num = Integer.parseInt(br.readLine());
if (num != 0){
stack.push(num);
} else {
stack.pop();
}
}
N개의 정수만큼 반복합니다.
반복되는 만큼 정수를 입력받습니다.
그 정수가 0이 아니면 stack에 push를 하여 해당 정수를 쌓습니다.
0이면 pop를 하여 제일 위에 있는 정수를 빼줍니다.
int size = stack.size();
int sum = 0;
for (int i=0; i<size; i++){
sum = sum + stack.pop();
}
System.out.println(sum);
스택의 사이즈를 변수로 만듭니다.
합계를 위해 변수를 만듭니다.
스택에 size만큼 반복합니다.
스택에 있는 수를 빼서 합계를 구합니다.
출력합니다.
스택을 활용하면 어렵지 않은 문제입니다.
728x90
'알고리즘 with JAVA' 카테고리의 다른 글
백준 10799번 쇠막대기 문제 - JAVA (0) | 2022.05.25 |
---|---|
백준 4949번 균형잡힌 세상 (JAVA) (0) | 2022.05.24 |
백준 10828번 문제 - 스택 (JAVA) (0) | 2022.05.16 |
JAVA 소수 구하기 - 에라토스테네스의 체 (0) | 2021.08.08 |
파보나치 수열 - Java 간단한 풀이 (0) | 2021.08.07 |