![[백준 10828번 / Java] 스택](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZuKHE%2FbtslJ9Qq5i4%2FPpf62lFVRmHKlkhZ7SfwuK%2Fimg.png)
[백준 10828번 / Java] 스택P.S./백준2023. 7. 1. 07:27
Table of Contents
728x90
728x90
문제 링크
https://www.acmicpc.net/problem/10828
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
풀이
단순 스택을 구현하는 문제로, List배열을 사용했음
아래 사진은 StringBuffer와 System.out.print의 시간 차이 (중간에는 stringbuffer을 sysout해주지 않음....)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class BaekJoon10828 {
static List<Integer> stack = new ArrayList<>();
static StringBuffer sb = new StringBuffer();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
for(int i = 0; i < N; i++){
st = new StringTokenizer(br.readLine(), " ");
switch(st.nextToken()){
case "push": push(Integer.parseInt(st.nextToken()));
break;
case "pop" : pop();
break;
case "size" : size();
break;
case "empty" : empty();
break;
case "top" : top();
break;
}
}
System.out.println(sb.toString());
}
private static void push(int i) {
stack.add(i);
}
private static void pop() {
if(stack.isEmpty()) sb.append(-1 + "\n");
else{
sb.append(stack.remove(stack.size() - 1) + "\n");
}
}
private static void size() {
sb.append(stack.size() + "\n");
}
private static void empty() {
if(stack.isEmpty()) sb.append(1 + "\n");
else sb.append(0 + "\n");
}
private static void top() {
if(stack.isEmpty()) sb.append(-1 + "\n");
else sb.append(stack.get(stack.size() - 1) + "\n");
}
}
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!