1. 문제 링크
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
2. 문제 및 입출력 예제
3. 문제 풀이
스택 자료구조를 알고 있다면 그대로 코드로 적으면 된다.
근데 왜 이렇게 많이 틀렸냐면...
pop 에서 arr.remove(size-1);를 두번 반복해서 했기 때문이었다!
이걸 바로 봤으면 한 번 틀렸습니다였겠지만 출력 조건만 보고
어라 System.out.println()으로 고쳐야 하나 싶어서 시도를 해봤기 때문..이다...
흑 이런 실수 다시 안 하려고 글로 남긴다.
4. 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String temp = br.readLine();
int n = Integer.parseInt(temp);
ArrayList<String> arr = new ArrayList<>();
for(int i=0;i<n;i++) { //n번 반복
temp = br.readLine();
String[] str = new String[2];
str = temp.split(" ");
int size = arr.size();
if(str[0].equals("push")) {
arr.add(str[1]);
}
else if(str[0].equals("pop")) {
if(size!=0) {
sb.append(arr.get(size-1)+"\n");
arr.remove(size-1);
}
else {
sb.append("-1\n");
}
}
else if(str[0].equals("size")) {
sb.append(size+"\n");
}
else if(str[0].equals("empty")) {
if(size==0) {
sb.append("1\n");
}
else {
sb.append("0\n");
}
}
else if(str[0].equals("top")){
if(size!=0) {
sb.append(arr.get(size-1)+"\n");
}
else {
sb.append("-1\n");
}
}
}
System.out.println(sb);
}
}
'ALGORITHM' 카테고리의 다른 글
백준 3052 나머지 (Java) (0) | 2023.01.17 |
---|---|
백준 2869 달팽이는 올라가고 싶다 (Java) (0) | 2023.01.16 |
백준 1181 단어 정렬 (Java) (0) | 2023.01.15 |
백준 2309 일곱 난쟁이 (Java) (0) | 2023.01.13 |
백준 2839 설탕배달 (Java) (1) | 2023.01.12 |