본문 바로가기
알고리즘/Backjoon

18258 : 큐 2

by 뚱키 2022. 2. 22.
728x90
난이도 Silver4
링크 https://www.acmicpc.net/problem/18258

문제 사진.


풀이.

자료구조중 Queue를 구현하면 되는 문제 

시간제한이 있는 문제이므로, Scanner/String에 더해서 방식으로 출력을 만들 경우 시간초과에 걸리기 쉽다.


소스코드.

	public static void main(String[] args) throws IOException{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		int N=Integer.parseInt(br.readLine());
		Queue qu=new Queue(N);
		StringBuilder sb=new StringBuilder();
		for(int i=0;i<N;i++) {
			String[] input=br.readLine().split(" ");
			
			switch (input[0]) {
			case "push":
				qu.push(Integer.parseInt(input[1]));
				break;
			case "pop":
				sb.append(qu.pop()).append("\n");
				break;
			case "size":
				sb.append(qu.size()).append("\n");
				break;
			case "empty":
				sb.append(qu.empty()).append("\n");
				break;
			case "front":
				sb.append(qu.front()).append("\n");
				break;
			case "back":
				sb.append(qu.back()).append("\n");
				break;

			}
		}
		System.out.println(sb.toString());
		

	}
	
	static class Queue {
		int[] arr;
		int start=0;
		int end=0;
		
		Queue(int N){
			this.arr=new int[N+1];
		}
		
		void push(int X) {
			arr[end++]=X;
		}
		int pop() {
			if(start>=end) {
				return -1;
			}
			
			return arr[start++];
		}
		int size() {
			if(start>=end) {
				return 0;
			}
			
			return end-start;
		}
		
		int empty() {
			if(this.size()==0) {
				return 1;
			}
			return 0;
		}
		int front() {
			if(this.size()==0) {
				return -1;
			}
			return arr[start];
		}
		
		int back() {
			if(this.size()==0) {
				return -1;
			}
			return arr[end-1];
		}
	}

후기.

STL을 사용하도 되지만, 이런 문제의 핵심은 구현을 한 번 해보는 것이라고 생각한다.

그건 그렇고 너무 쉬운문제만 푸는 것 같은데 난이도를 올려야겠다.

728x90

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

1986번 : 체스  (0) 2022.03.02
B16948 : 데스 나이트  (0) 2022.02.23
B3085 : 사탕 게임  (0) 2022.02.14
B18108: 1998년생인 내가 태국에서는 2541년생?!  (0) 2022.02.12
5567번: 결혼식  (0) 2020.02.23

댓글