티스토리 뷰

알고리즘

백준 자바 10828번 스택

chaewonni 2023. 3. 29. 00:30

그냥 간단한 스택 사용할 수 있냐 없냐를 묻는 문제.

 

package boj_basic.cp_1;

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 Q10828 {

	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<>();
		
		int N = Integer.parseInt(br.readLine());
		
		for(int i = 0; i < N; i++) {
			
			String[] order = br.readLine().split(" ");
			
			switch(order[0]) {
			case "push":
				stack.push(Integer.parseInt(order[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();

	}

}

함수 구현 안하고 스택 제네릭 사용해서 푼 문제.

 

package boj_basic.cp_1;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
	
class Stack{
	private int top;
	private int stArr[];
		
	public Stack(int size) {
		this.top = -1;
		this.stArr = new int[size];
	}
		
	public void push(int n) {
		this.stArr[++top] = n;
	}
		
	public int pop() {
		if(top==-1) return -1;
		return this.stArr[top--];
	}
		
	public int size() {
		return top+1;
	}
		
	public int empty() {
		if(top==-1) return 1;
		return 0;
	}
		
	public int top() {
		if(top == -1) return -1;
		return this.stArr[top];
	}
}


public class Q10828_1 {
	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));
			
		int N = Integer.parseInt(br.readLine());
		Stack st = new Stack(N);
		
		for(int i = 0; i<N; i++) {
			String[] order = br.readLine().split(" ");
			
			switch(order[0]) {
			case "push":
				st.push(Integer.parseInt(order[1]));
				break;
			
			case "pop":
				bw.write(st.pop() + "\n");
				break;
			
			case "size":
				bw.write(st.size() + "\n");
				break;
			
			case "empty":
				bw.write(st.empty() + "\n");
				break;
				
			case "top":
				bw.write(st.top() + "\n");
			}
		}
		
		bw.flush();
		bw.close();

	}
}

직접 함수 구현하여 푼 문제.

 

확실히 제네릭 쓰는 게 편리한 거 같다^^

'알고리즘' 카테고리의 다른 글

백준 자바 9012번 괄호  (1) 2023.03.30
백준 자바 9093번 단어 뒤집기  (0) 2023.03.29
백준 자바 1874번 스택수열  (1) 2023.03.29
백준 #11399 java 2023.02.04  (1) 2023.02.05
백준 #25305 java 2023.02.02  (1) 2023.02.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함