스택 (백준 10828번)

박영준·2023년 5월 23일
0

코딩테스트

목록 보기
141/300

메모

/*
해당 명령어들은 '스택'을 기준으로 함

push X = 정수X 넣기
pop = 가장 위 정수 빼서 출력 (단, 정수가 없다면 -1 출력)
size = 정수 개수 출력
empty = 비어 있으면 1, 아니면 0 출력
top = 가장 위 정수 출력 (단, 정수가 없다면 -1 출력)
*/

해결법

방법 1

import java.io.*;
import java.util.Stack;

public class Main {
    public static void main(String[] args) throws IOException {		// BuffredReader 사용 시, 예외처리가 필요
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));		// BufferedReader 선언
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));		// BufferedWriter 선언

        Stack<Integer> s = new Stack<>();		// 스택 사용

        int num = Integer.parseInt(br.readLine());		// string 으로 고정된 값을 int 타입으로 형 변환시키기

        for (int i = 0; i < num; i++) {
            String[] input = br.readLine().split(" ");		// 공백 단위로 데이터 가공을 위해, 각 데이터를 배열에 넣기

            switch (input[0]) {
                case "push":		// 정수X 넣기
                    s.push(Integer.parseInt(input[1]));
                    break;
                    
                case "pop":		// 가장 위 정수 빼서 출력 (단, 정수가 없다면 -1 출력)
                    if (s.empty()) {
                        bw.write("-1" + "\n");
                    } else {
                        bw.write(s.pop() + "\n");
                    }
                    break;
                    
                case "size":		// 정수 개수 출력
                    bw.write(s.size() + "\n");
                    break;
                    
                case "empty":		//  비어 있으면 1, 아니면 0 출력
                    if (s.empty()) {
                        bw.write("1" + "\n");
                    } else {
                        bw.write("0" + "\n");
                    }
                    break;
                    
                case "top":		// 가장 위 정수 출력 (단, 정수가 없다면 -1 출력)
                    if (s.empty()) {
                        bw.write("-1" + "\n");
                    } else {
                        bw.write(s.peek() + "\n");		// 마지막 데이터 반환
                    }
                    break;
            }
        }
        
        bw.flush();
        bw.close();
    }
}

참고: [Java] 줄바꿈 하기 (\n, \r, \r\n 의 차이)


스택 (백준 10828번)

profile
개발자로 거듭나기!

0개의 댓글