https://www.acmicpc.net/problem/10828
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
백준 10828번 스택 문제 링크입니다.
핵심
매우 쉬운 문제이다. 스택에 관련된 문제를 입력하면, 그에 해당하는 스택의 메서드를 실행하면 된다. push의 경우에는 숫자를 한번 더 받는다.
정답 코드
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
Stack s= new Stack();
int N = sc.nextInt();
int count=0;
StringBuilder sb = new StringBuilder();
for(int i=0; i <N; i++){
String str = sc.next();
if(str.contains("push")) {
s.push(sc.nextInt());
count++;
}
if(str.contains("top")){
if(s.empty()) sb.append(-1).append('\n');
else sb.append(s.peek()).append('\n');
}
if(str.contains("pop")){
if (s.empty()) sb.append(-1).append('\n');
else {
sb.append(s.peek()).append('\n');
s.pop();
count--;
}
}
if(str.contains("size")) sb.append(count).append('\n');
if(str.contains("empty")){
if (s.empty()) sb.append(1).append('\n');
else sb.append(0).append('\n');
}
}
System.out.println(sb);
}
}
해설
스택을 생성한다. StringBuilder를 사용하여, 시간을 조금 더 줄일 수 있다.
문자열을 받고, 그에 해당하는 스택 메서드를 실행하면 된다.
push의 경우 어떤 숫자를 추가해야 하는지 알아야 하므로, 숫자를 한 번 더 입력받는다.
top, pop의 경우에는 스택이 비어있을 경우, EmptyStackException이 발생할 수 있다.
그래서 반드시 실행 전 empty메서드를 사용하여야 한다.
개선점이나 오류가 있다면, 댓글 부탁드립니다.
'PS > 알고리즘 문제풀이' 카테고리의 다른 글
[백준]14888번 연산자 끼워넣기(java) (0) | 2022.07.24 |
---|---|
[백준]11729번 하노이 탑 이동 순서(java) (1) | 2022.07.23 |
[백준]1620번 나는야 포켓몬 마스터 이다솜(java) (0) | 2022.07.18 |
[백준]2004번 조합0의 개수(java) (0) | 2022.07.17 |
[백준]15650번 N과M(2) (java) (0) | 2022.07.16 |