https://www.acmicpc.net/problem/10828
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
있는 라이브러리로 구현하면 되서 어렵지 않았는데...
1. 런타임에러 (NumberFormat)로 실패ㅜㅜ ❌
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Integer> stack = new Stack<>();
int n = Integer.parseInt(br.readLine());
StringTokenizer st;
for(int i=0; i<n; i++){
String input= br.readLine();
if(input.contains("push")){
int input2 = Integer.parseInt(br.readLine());
stack.push(input2);
}
if(input=="pop"){
if(stack.isEmpty())
System.out.println(-1);
else
System.out.println(stack.pop());
}if(input=="size"){
System.out.println(stack.size());
}if(input=="empty"){
System.out.println(-1);
}if(input=="top"){
if(stack.isEmpty()){
System.out.println(-1);
}else{
System.out.println(stack.peek());
}
}
}
}
}
2. 문제 조건 제대로 안 읽어서 비었는지 확인 할때 1 또는 0이 나와야하는데 그냥 -1로 출력시켜 버려서 틀려버림 ❌
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Integer> stack = new Stack<>();
int n = Integer.parseInt(br.readLine());
for(int i=0; i<n; i++) {
String input = br.readLine();
String[] str = input.split(" ");
if (input.contains("push")) {
stack.push(Integer.parseInt(str[1]));
}
if (input.equals("pop")) {
if (stack.isEmpty())
System.out.println(-1);
else
System.out.println(stack.pop());
}
if (input.equals("size")) {
System.out.println(stack.size());
}
if (input.equals("empty")) {
System.out.println(-1);
}
if (input.equals("top")) {
if (stack.isEmpty()) {
System.out.println(-1);
} else {
System.out.println(stack.peek());
}
}
}
}
}
3. 런타임에러 (NullPointer) 뜸.... ❌
그리고 인텔리J에서 돌리면 계속 마지막 출력값이 엔터를 쳐야 나옴...
도대체 왜 그러는거죠? 구글링 하다가 Stringbuilder나 StringBuffer 등 다른 것들을 써보는걸 추천하는 글을 봤어는데 그 글을 그냥 닫아버리고 지나가버려서 어디서 봤는지 기억이 안남...
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Integer> stack = new Stack<>();
int n = Integer.parseInt(br.readLine());
for (int i = 0; i <= n; i++) {
String input = br.readLine();
String[] str = input.split(" ");
if (input.contains("push")) {
stack.push(Integer.parseInt(str[1]));
}
else if (input.equals("pop")) {
if (stack.isEmpty())
System.out.println(-1);
else
System.out.println(stack.pop());
}
else if (input.equals("size")) {
System.out.println(stack.size());
}
else if (input.equals("empty")) {
System.out.println(stack.isEmpty() ? 1 : 0);
}
else if (input.equals("top")) {
System.out.println(stack.isEmpty()?-1:stack.peek());
}
}
}
}
4. 드디어 딩동댕! ⭕
달라진거라고 split할때 입력 받자마자 바로 해주고 문자, 숫자 나눠서 문자 부분만 비교해서 한거 밖에 없는데...
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
class Main {
public static void main(String[] args) throws NullPointerException ,IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Integer> stack = new Stack<>();
int n = Integer.parseInt(br.readLine());
for (int i = 0; i <n; i++) {
String[] str = br.readLine().split(" ");
if (str[0].equals("push")) {
stack.push(Integer.parseInt(str[1]));
}
else if (str[0].equals("pop")) {
if (stack.isEmpty())
System.out.println(-1);
else
System.out.println(stack.pop());
}
else if (str[0].equals("size")) {
System.out.println(stack.size());
}
else if (str[0].equals("empty")) {
if(stack.isEmpty()){
System.out.println(1);
}else {
System.out.println(0);
}
}
else if (str[0].equals("top")) {
if (stack.empty()) {
System.out.println(-1);
} else {
System.out.println(stack.peek());
}
}
}
}
}
반응형
'PS > BOJ' 카테고리의 다른 글
백준 10989 수 정렬하기 3 (0) | 2021.07.12 |
---|---|
백준 2751 수 정렬하기 2 (0) | 2021.07.12 |
백준 2750 수 정렬하기 (0) | 2021.07.12 |
백준 10451 순열 사이클 JAVA (0) | 2021.04.10 |
백준 1707 이분 그래프 JAVA (0) | 2021.04.10 |