[백준 JAVA] 28278번 풀이 - 스택2
by mini_minpackage quiz;
import java.io.*;
import java.util.Stack;
import java.util.StringTokenizer;
/**
* 1 X: 정수 X를 스택에 넣는다. (1 ≤ X ≤ 100,000)
* 2: 스택에 정수가 있다면 맨 위의 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다.
* 3: 스택에 들어있는 정수의 개수를 출력한다.
* 4: 스택이 비어있으면 1, 아니면 0을 출력한다.
* 5: 스택에 정수가 있다면 맨 위의 정수를 출력한다. 없다면 -1을 대신 출력한다.
*
* 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000)
*
* 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다.
*
* 출력을 요구하는 명령은 하나 이상 주어진다.
*/
public class test1006 {
static Stack<Integer> stack = new Stack<>();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int test = Integer.parseInt(br.readLine());
StringTokenizer st;
for (int i=0; i<test; i++){
st = new StringTokenizer(br.readLine());
int orderNum = Integer.parseInt(st.nextToken());
if(orderNum==1){
stack.push(Integer.parseInt(st.nextToken()));
} else if(orderNum==2){
if(stack.empty()){
bw.write(-1+"\n");
} else {
bw.write(stack.pop()+"\n");
}
} else if(orderNum==3){
bw.write(stack.size()+"\n");
} else if(orderNum==4){
if(stack.empty()){
bw.write(1+"\n");
} else {
bw.write(0+"\n");
}
} else if(orderNum==5){
if(stack.empty()==false){
bw.write(stack.peek()+"\n");
} else{
bw.write(-1+"\n");
}
}
}
bw.flush();
bw.close();
}
}
풀이
pop() -> top 요소 반환 후 !!! 삭제
peek() -> top 요소 반환 후 !!! 삭제 xxxx
- Scanner / System.out.println 으로 풀면 '시간초과' 오류 뜸
'매일매일 알고리즘 공부' 카테고리의 다른 글
[백준 JAVA] 12789번 풀이 - 도키도키 간식드리미 (0) | 2023.10.12 |
---|---|
[백준 JAVA] 4949번 풀이 - 균형잡힌 세상 (0) | 2023.10.11 |
[백준 JAVA] 9012번 풀이 - 괄호 (✨✨✨) (0) | 2023.10.05 |
[백준 JAVA] 17103번 풀이 - 골드바흐 파티션 (골드바흐의 추측) (1) | 2023.09.25 |
[백준 JAVA] 4948번 풀이 - 베르트랑 공준 (0) | 2023.09.22 |
블로그의 정보
개발자 미니민의 개발로그
mini_min