문제 해설
스택 자료구조를 직접 구현하는 문제입니다. 총 다섯가지의 명령에 따라 기능을 구현하면 됩니다.
문제 풀이 계획
필요 변수
변수명 | 타입 | 설명 |
N | int | 첫째 줄에 주어지는 명령의 수 |
arr | int[] | 숫자를 저장할 배열 |
top | int | 배열의 최종 인덱스를 가리킬 변수 |
해결 로직
- 명령 수 N을 입력 받는다.
- N 번에 걸쳐 명령어를 입력 받는다.
- 명령어 별로 분기 처리하여 각 로직을 처리한다.
풀이 코드
package com.newlecture.app.util;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Program {
public static int N;
public static int[] arr;
public static int top = -1;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
// 1. 명령어 숫자를 입력 받는다.
N = Integer.parseInt(st.nextToken());
arr = new int[N];
while(N-- > 0) {
// 2. N 번의 명령어를 입력 받는다.
st = new StringTokenizer(br.readLine());
while(st.hasMoreTokens()) {
// 3. 명령어에 따라 분기 처리한다.
String command = st.nextToken();
switch(command) {
case "push": {
push(Integer.parseInt(st.nextToken()));
break;
}
case "pop": {
sb.append(pop()).append('\n');
break;
}
case "size": {
sb.append(size()).append('\n');
break;
}
case "empty": {
sb.append(empty()).append('\n');
break;
}
default: {
sb.append(top()).append('\n');
}
}
}
}
// 4. 출력한다
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(sb.toString());
bw.flush();
bw.close();
}
public static void push(int n) {
arr[++top]=n; // top index를 먼저 위로 올리고 값을 넣는다.
}
public static int pop() {
return (top == -1) ? -1:arr[top--]; // 값을 먼저 빼고 top index를 아래로 내린다.
}
public static int empty() {
return (top == -1) ? 1:0;
}
public static int size() {
return top+1;
}
public static int top() {
return (top == -1) ? -1:arr[top];
}
}
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
'개발 > Problem Solving' 카테고리의 다른 글
백준 2164 카드2 - Java 자바 문제 풀이 (1) | 2024.02.08 |
---|---|
백준 10845 큐 - Java 자바 문제 풀이 (1) | 2024.02.08 |
백준 2493 탑 - Java 자바 문제 풀이 (0) | 2024.02.06 |
백준 1874 스택 수열 - Java 자바 문제 풀이 (0) | 2024.02.06 |
백준 10773 제로 - Java 자바 문제풀이 (1) | 2024.02.06 |