본문 바로가기

ALGORITHM

백준 10828 스택 (Java)

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