Hamutaro - Hamtaro 4

Algorithm/BOJ

[๋ฐฑ์ค€/JAVA] 10828 ์Šคํƒ

carsumin 2021. 11. 12. 14:47

๊ฒจ์šฐ ์„ฑ๊ณต...

 

 

https://www.acmicpc.net/problem/10828

 

10828๋ฒˆ: ์Šคํƒ

์ฒซ์งธ ์ค„์— ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์˜ ์ˆ˜ N (1 ≤ N ≤ 10,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋ช…๋ น์ด ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ์ •์ˆ˜๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋ฌธ์ œ์— ๋‚˜์™€์žˆ์ง€

www.acmicpc.net

 

๋‹จ์ˆœ ์Šคํƒ ๊ตฌํ˜„ ๋ฌธ์ œ๋ผ ๊ฐ„๋‹จํ• ์ค„ ์•Œ์•˜๋Š”๋ฐ...

์ž๊พธ ์‹œ๊ฐ„์ดˆ๊ณผ / ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค

 

<์ฒ˜์Œ์— ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ–ˆ๋˜ ์ฝ”๋“œ>

import java.util.Stack;

public class bj_10828 {
	
	public static void main(String[] args) {
		
    Scanner sc = new Scanner(System.in);

    int N = sc.nextInt();

    Stack<Integer> stack = new Stack<>();
		
		
    for(int i=0; i<N; i++) {

        String od = sc.next();

        if(od.contains("push")) {
            int X = sc.nextInt();
            stack.push(X); //stack์— X๊ฐ’ push
        }else if(od.equals("pop")) {
            System.out.println(stack.isEmpty()?-1:stack.pop()); //stack์ด ๋น„์–ด์žˆ์œผ๋ฉด -1์ถœ๋ ฅ, ์•„๋‹ˆ๋ฉด popํ•˜๊ณ  ์ถœ๋ ฅ
        }else if(od.equals("size")) {
            System.out.println(stack.size()); 
        }else if(od.equals("empty")) {
            System.out.println(stack.empty());
        }else if(od.equals("top")) {
            System.out.println(stack.isEmpty()?-1:stack.peek()); //stack์ด ๋น„์–ด์žˆ์œผ๋ฉด -1์ถœ๋ ฅ, ์•„๋‹ˆ๋ฉด ์ƒ๋‹จ๊ฐ’ ์ถœ๋ ฅ
        }
      }
   }
}

 

์ดํด๋ฆฝ์Šค์—์„œ๋Š” ์ œ๋Œ€๋กœ ๋Œ์•„๊ฐ”์ง€๋งŒ ์ œ์ถœํ•˜๋‹ˆ๊นŒ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋–ด๋‹ค

๊ทธ๋ž˜์„œ Scanner๋ฅผ BufferedReader๋กœ ์ˆ˜์ •ํ•˜๊ณ  ๋‹ค์‹œ ์ œ์ถœํ•˜๋‹ˆ ๋Ÿฐํƒ€์ž„์—๋Ÿฌ

์ฒซ๋ฒˆ์งธ if๋ฌธ์—์„œ br.readLine()์œผ๋กœ ์ฝ๊ธฐ๋งŒ ํ•˜๊ณ  ๊ณต๋ฐฑ์ฒ˜๋ฆฌ๊ฐ€ ์•ˆ๋œ๊ฒŒ ์›์ธ์ด์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;

public class Main {
    public static void main(String[] args) throws NumberFormatException, IOException {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
      	
        Stack<Integer> stack = new Stack<Integer>();
		
        int N = Integer.parseInt(br.readLine());
				
		for(int i=0; i<N; i++) {

            String[] od = br.readLine().split(" ");
			
			switch(od[0]){
                case "push":
                    stack.push(Integer.parseInt(od[1]));
                    break;
                case "pop":
                    if(stack.empty()){
                        bw.write("-1" + "\n");
                    }else{
                        bw.write(stack.pop() + "\n");
                    }
                    break;
                case "size":
                    bw.write(stack.size() + "\n");
                    break;
                case "empty":
                    if(stack.empty()){
                        bw.write("1"+"\n");
                    }else{
                        bw.write("0"+"\n");
                    }
                    break;
                case "top":
                    if(stack.empty()){
                        bw.write("-1" + "\n");
                    }else{
                        bw.write(stack.peek() + "\n");
                    }
                    break;
            }
		}
        bw.flush();
        bw.close();
	}
}

 

switch๋ฌธ์ด ๋” ๊น”๋”ํ•ด๋ณด์—ฌ์„œ ์ˆ˜์ •ํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  System.out.print ๋Œ€์‹  BufferedWriter๋กœ ์ˆ˜์ •

๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.