본문 바로가기
백준 문제풀이

[백준]10828번 문제풀이

by Dodledd 2024. 2. 5.

처음에는 스캐너를 이용해서 풀었는데 시간초과가 나서 BufferedReader로 바꾸어서 풀었습니다.

지금까지 배운 기초들을 이용해서 풀기에 딱 적당한 문제느낌

 

먼저 실행되는 main문 입니다.

public static void main(String[] args) throws IOException{ //BufferedReader는 예외처리 필수
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));		
		Stack<Integer> st = new Stack<>(); //Integer형 스택을 만듬.
		
		int index = Integer.parseInt(reader.readLine()); //입력받을 개수
		String str; //입력받은 문자열
		String[] strArray = new String[2]; //문자열을 잘라 배열에 넣을 용도
		int count=0; //size를 출력하기위한 변수, push와 pop이 실행될 때 마다 변동됨
		for(int i =0; i<index; i ++) { //입력받은 index만큼 반복
			str = reader.readLine();
			strArray = str.split(" "); //split을 사용해서 공백기준을 기준으로 문자열 자름		
			
			switch(strArray[0]) {// 자른 문자열 첫 번째
			case "push"://스택에 값 추가
				push(st,Integer.parseInt(strArray[1])); //추가되는 값 넣어줌
				count++; //push이 실행되면 총 개수가 늘어난거니까 ++;
				break;
			case "pop"://스택 젤 윗값 제거
				pop(st); 
				if(count!=0) //-1이 되면 안되니 붙는 조건
					count--; //pop이 실행되면 총 개수가 줄어든거니까 --;
				break;
			case "size": //스택에 들어있는 총 개수
				size(count); 
				break;
			case "empty": //비어있나 확인하는 것
				empty(st);			
				break;
			case "top": //스택의 젤 위에 값 출력,비어있으면 -1
				top(st);			
				break;
				default:
					break;
				
			}//end switch
		}//end for
		
		
		

	}//end main

 

 

메서드 영역입니다.

public static void push(Stack<Integer> st,int i) { //매개변수가 Integer형 Stack이니까 설정
		st.add(i);
	}
	
	public static void pop(Stack<Integer> st) { //값 제거
		if(st.empty()) //비어있나?
			System.out.println("-1"); //true
		else
			System.out.println(st.pop()); //false
	}
	
	public static void size(int count) {
		System.out.println(count);
	}

	public static void empty(Stack<Integer> st) {
		if(st.empty())
			System.out.println("1");
		else
			System.out.println("0");
	}

	public static void top(Stack<Integer> st) {
		try {
				System.out.println(st.peek()); //peek 메서드는 예외처리를 해야 오류가 나지 않는다.
		}catch(NoSuchElementException e) {
			System.out.println("-1");
		}catch(EmptyStackException e) {
			System.out.println("-1");
		}
	}//end top

'백준 문제풀이' 카테고리의 다른 글

[백준] 1032번 문제풀이  (0) 2024.02.20
[백준] 1920번 문제풀이  (0) 2024.02.10
[백준]1157번 문제 풀이  (0) 2024.01.29
[백준]25206번 문제 풀이  (0) 2024.01.28
[백준] 3052번 문제 풀이  (2) 2024.01.28