10828번 : 스택에 이어서 다음 스택 관련 문제인 10773번 : 제로 문제를 풀었다.
스택에 대해 아직 이해하지 못했다면 다음의 블로그에서 확인하면 된다.
https://lucy1215.tistory.com/17
[자료구조] 스택 (Stack)
🚩스택 (Stack)의 개념 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO (Last In First Out) 형식의 자료 구조 ❓스택 (Stack)의 특징 1. 먼저 들어간 자료가 나중에 나옴. LIFO구조 2. 시스템 해킹에서 버퍼오버
lucy1215.tistory.com
바로 앞 문제인 10828번 : 스택 에 대한 내용은 바로 앞의 블로그에서 확인하면 된다.
https://lucy1215.tistory.com/18
[백준] 10828번 : 스택 (JAVA)
바로 전에 스택을 공부한 뒤, 그 내용을 바탕으로 스택 문제 1번인 10828번 : 스택 문제를 풀었다. 스택에 대해 아직 이해하지 못했다면 다음의 블로그에서 확인하면 된다. https://lucy1215.tistory.com/17
lucy1215.tistory.com
<문제>
<문제 해석>
스택을 이용하여
0이 아닌 숫자일 때는 stack에 그 수를 push하고
숫자가 0이면 stack의 맨 위 숫자를 pop한다.
마지막에 stack에 있는 숫자들의 합을 구한다.
<문제 해결>
이 문제 또한, 스택 관련 문제이다.
스택에 대해 이해하고 있다면 어렵지 않게 풀었을 것이다.
이 문제는 2단계로 나눌 수 있는데,
1. 숫자가 0이면 pop / 0이 아니면 push ====> run() 함수
2. 마지막에 stack에 있는 숫자들의 합 ====> sum() 함수
<코드>
import java.io.IOException;
import java.util.Scanner;
import java.util.Stack;
public class Main {
static int n;
static Stack<Integer> stack = new Stack<>();
static int a;
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
for(int i=0;i<n;i++) {
a = sc.nextInt();
run();
}
System.out.println(sum());
}
static void run() {
if(a != 0) {
stack.push(a);
}else {
stack.pop();
}
}
static int sum() {
int total = 0;
for(int i=0;i<stack.size();i++) {
total += stack.get(i);
}
return total;
}
}
https://www.acmicpc.net/problem/10773
10773번: 제로
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경
www.acmicpc.net
'백준' 카테고리의 다른 글
[백준] 4949번 : 균형잡힌 세상 (JAVA) (0) | 2023.01.09 |
---|---|
[백준] 9012번 : 괄호 (JAVA) (0) | 2023.01.09 |
[백준] 10828번 : 스택 (JAVA) (0) | 2023.01.09 |
[백준] 1931번 : 회의실 배정 (JAVA) (2) | 2023.01.06 |
[백준] 11047번 : 동전 0 (JAVA) (0) | 2023.01.06 |