https://www.acmicpc.net/problem/10828
문제 설명
첫번째 줄에 문장들의 갯수가 주어지고 문장이 의미하는 대로 stack에 수를 push하고 pop하는 등의 과정을 수행한다.
문제 풀이
- n에 문장의 수를 입력받는다.
- Integer형식인 stack를 하나 만든다.
- stringTokneizer을 이용하여 문자열을 입력받는다.
- 문자열이 push일 경우 스택에 넣을 값을 입력받고 이를 push한다.
- pop, peek등의 문자열을 입력받으면 그에 맞는 기능을 수행하도록 한다.
- 시간초과를 방지하기 위해 StringBuilder에 저장한 후 한번에 출력했다.
풀이 코드
import java.util.*;
import java.io.*;
class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st ;
StringBuilder sb = new StringBuilder();
Stack<Integer> stack = new Stack<>();
int n = Integer.parseInt(br.readLine());
int i;
int keep = 0;
for(i = 0;i<n;i++) {
st = new StringTokenizer(br.readLine());
String now = st.nextToken();
if(now.equals("push")) {
int a = Integer.parseInt(st.nextToken());
stack.push(a);
}
else if(now.equals("pop")) {
if(stack.isEmpty() == false)
{int k = stack.pop();
sb.append(k).append("\n");}
else sb.append(-1).append("\n");
}
else if(now.equals("size")) {
sb.append(stack.size()).append("\n");
}
else if(now.equals("empty")) {
if(stack.isEmpty() == true) {
sb.append(1).append("\n");
}
else {
sb.append(0).append("\n");
}
}
else if(now.equals("top")) {
if(stack.isEmpty() == true) {
sb.append(-1).append("\n");
}
else {
sb.append(stack.peek()).append("\n");
}
}
}
System.out.println(sb);
}
}
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
백준 [자바 java] 1927 : 최소 힙 (0) | 2023.07.13 |
---|---|
백준 [자바 java] 10845 : 큐 (0) | 2023.07.12 |
백준 [자바 java] 11000 : 강의실 배정 (0) | 2023.07.11 |
백준[자바 java] 1446번 : 지름길 (0) | 2023.07.11 |
백준 [java 자바] 2251번 : 물통 (0) | 2022.08.19 |