728x90
https://www.acmicpc.net/problem/10828
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
java에서 제공하는 스택을 사용하였다!
시간제한이 0.5초이기 때문에, stringbuilder를 사용하였음
Bufferedreader에 익숙해지려고 Bufferedreader를 사용하였는데 push 다음의 값을 읽는 것이 처음에 헷갈렸다!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack; //import
import java.util.StringTokenizer;
public class Main_스택10828 {
public static void main(String[] args) throws NumberFormatException, IOException {
Stack<Integer> stack = new Stack<>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
while(N-- > 0) {
st = new StringTokenizer(br.readLine(), " ");
switch(st.nextToken()) {
case "push":
stack.push(Integer.parseInt(st.nextToken()));
break;
case "pop":
if(stack.isEmpty()) {
sb.append(-1 + "\n");
}
else {
sb.append(stack.pop() + "\n");
}
break;
case "size":
sb.append(stack.size() + "\n");
break;
case "empty":
if(stack.isEmpty())
sb.append(1 + "\n");
else
sb.append(0 + "\n");
break;
case "top":
if(stack.isEmpty()) {
sb.append(-1 + "\n");
}
else {
sb.append(stack.peek() + "\n");
}
break;
}
}
System.out.println(sb);
}
}
728x90
'CS > Algorithm' 카테고리의 다른 글
[Python] 주요 라이브러리의 문법 (0) | 2022.01.31 |
---|---|
[Python] 함수 & 입출력 (0) | 2022.01.31 |
[백준 : 2751/JAVA] 수 정렬하기2 (0) | 2021.10.04 |
[ 백준:1167/JAVA ] 트리의 지름 (0) | 2021.09.19 |
[JAVA / 백준 : 1956 ] 운동 (0) | 2021.09.13 |