🌞Algorithm/🔥Baekjoon

[Baekjoon] 28279_덱 2

뿌야._. 2023. 8. 21. 10:17

Silver IV

문제(출처: https://www.acmicpc.net/problem/28279)

< 덱 2 >

 

문제 풀이 

 

Deque를 사용해서 문제를 해결했다.

 

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;

public class _28279_ { // 덱 2

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;

		int n = Integer.parseInt(bf.readLine());

		Deque<Integer> deque = new ArrayDeque<>();

		for (int i = 0; i < n; i++) {
			st = new StringTokenizer(bf.readLine());

			int num = Integer.parseInt(st.nextToken());
			if (num == 1) {
				int x = Integer.parseInt(st.nextToken());
				deque.addFirst(x);
			} else if (num == 2) {
				int x = Integer.parseInt(st.nextToken());
				deque.addLast(x);
			} else if (num == 3) {
				if (!deque.isEmpty()) {
					bw.write(deque.pollFirst() + "\n");
				} else {
					bw.write(-1 + "\n");
				}
			} else if (num == 4) {
				if (!deque.isEmpty()) {
					bw.write(deque.pollLast() + "\n");
				} else {
					bw.write(-1 + "\n");
				}
			} else if (num == 5) {
				bw.write(deque.size() + "\n");

			} else if (num == 6) {
				if (deque.isEmpty()) {
					bw.write(1 + "\n");
				} else {
					bw.write(0 + "\n");
				}
			} else if (num == 7) {
				if (!deque.isEmpty()) {
					bw.write(deque.peekFirst() + "\n");
				} else {
					bw.write(-1 + "\n");
				}
			} else if (num == 8) {
				if (!deque.isEmpty()) {
					bw.write(deque.peekLast() + "\n");
				} else {
					bw.write(-1 + "\n");
				}
			}
		}
		bw.flush();
	}
}

 

Main

변수)
n : 명령의 수
deque : Deque <Integer>
num : 명령 번호
x : 정수 X

 

- 명령의 수 (n) 입력

- 명령의 수(n) 만큼 명령 입력

: 명령 1이라면 정수 x를 덱의 앞에 넣음 (addFirst)

: 명령 2라면 정수 x를 덱의 뒤에 넣음 (addLast)

: 명령 3이라면 덱이 비었는지 확인 후 비어있지 않으면 맨 앞의 정수를 빼서 출력하고 (pollFirst) 비어있다면 -1 출력

: 명령 4라면 덱이 비어있는지 확인 후 비어있지 않으면 맨 뒤의 정수를 빼서 출력하고 (pollLast) 비어있다면 -1 출력

: 명령 5라면 덱의 size 출력

: 명령 6이라면 덱이 비어있으면 1 출력, 비어있지 않으면 0 출력

: 명령 7이라면 덱이 비어있는지 확인 후 비어있지 않으면 맨 앞의 정수 출력하고 (peekFirst) 비어있다면 -1 출력

: 명령 8이라면 덱이 비어있는지 확인 후 비어있지 않으면 맨 뒤의 정수 출력하고 (peekLast) 비어있다면 -1 출력