https://www.acmicpc.net/problem/10828
백준 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 |