Algorithm

백준 10845번 <큐>

seungh2 2020. 8. 26. 17:15

백준 알고리즘 10845번

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

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 ��

www.acmicpc.net

요즘 옛날에 들었던 코드플러스 알고리즘 기초 문제를 차근차근 풀어보는 즁

ㅎㅎ 모각코때 풀던 것보다 쉬운거 같다.. 아직 자료구조 부분을 풀고 있어서 그런가...

쉬우니까 꾸준히 풀 수 있겠지...


10845번

그냥 큐 만들면 된다.

간_단

 

명령어 종류 

push X : 정수 X를 큐에 넣는 연산

pop : 큐에서 가장 앞에 있는 정수를 뺴고, 그 수를 출력. (만약 큐가 비어있으면 -1 출력)

size : 큐에 들어있는 정수의 개수 출력

empty : 큐가 비어있으면 1, 아니면 0을 출력

front : 큐의 가장 앞에 있는 정수 출력. (만약 큐가 비어있으면 -1 출력)

back : 큐의 가장 뒤에 있는 정수 출력. (만약 큐가 비어있으면 -1 출력)


문제해결

LinkedList를 만들어서 구현했다.

 

입력은 BufferedReader와 StringTokenizer를 이용해 받았다. (<에디터> 문제에서 배운 거 활용하기!!!)

push X를 구현할 때 nextToken()으로 X를 받을 수 있어서 좋은 것 같다.

 

명령어 종류

push X : add()를 이용해 뒤에 계속 붙여준다.

pop : remove(0)을 이용해 맨 앞의 정수를 삭제한다.

size : size()를 이용한다.

empty : isEmpty()를 이용한다.

front : get(0)으로 맨 앞의 정수를 얻는다.

back : get(size() -1)으로 맨 뒤의 정수를 얻는다.


코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		LinkedList<Integer> queue = new LinkedList<Integer>();

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int num = Integer.parseInt(br.readLine());

		for (int i = 0; i < num; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			String str = st.nextToken();
			switch (str) {
			case "push": {
				int pushNum = Integer.parseInt(st.nextToken());
				queue.add(pushNum);
				break;
			}
			case "pop": {
				if (!queue.isEmpty()) {
					System.out.println(queue.get(0));
					queue.remove(0);
				} else {
					System.out.println(-1);
				}
				break;
			}
			case "size": {
				System.out.println(queue.size());
				break;

			}
			case "empty": {
				if (queue.isEmpty()) {
					System.out.println(1);
				} else {
					System.out.println(0);
				}
				break;
			}
			case "front": {
				if (!queue.isEmpty()) {
					System.out.println(queue.get(0));
				} else {
					System.out.println(-1);
				}
				break;
			}
			case "back": {
				if (!queue.isEmpty()) {
					System.out.println(queue.get(queue.size() - 1));
				} else {
					System.out.println(-1);
				}
				break;
			}
			default:

			}

		}

	}

}

 


와! 풀었다!

 

728x90