코테/백준

[백준/JAVA] 10866번: 덱

imname1am 2023. 6. 13. 00:55
반응형

🔺 문제

 

10866번: 덱

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

www.acmicpc.net

덱보다는 덱스님....🤍

 

 

🔺 코드

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.util.*;
import java.io.*;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        Deque<Integer> deque = new LinkedList<>();
        
        int N = Integer.parseInt(br.readLine());
        while(N --> 0) {
            String[] str = br.readLine().split(" ");
            String order = str[0];
            
            switch(order) {
                case "push_front" :
                    deque.addFirst(Integer.parseInt(str[1]));
                    break;
                    
                case "push_back" :
                    deque.addLast(Integer.parseInt(str[1]));
                    break;
                    
                case "pop_front" :
                    if(deque.size() == 0) {
                        sb.append("-1").append("\n");
                    } else {
                        sb.append(deque.pollFirst()).append("\n");
                    }
                    break;
                    
                case "pop_back" :
                    if(deque.size() == 0) {
                        sb.append("-1").append("\n");
                    } else {
                        sb.append(deque.pollLast()).append("\n");
                    }
                    break;
                    
                case "size" :
                    sb.append(deque.size()).append("\n");
                    break;
                    
                case "empty":
                    sb.append(deque.size() == 0 ? 1 : 0).append("\n");
                    break;
                    
                case "front" :
                    if(deque.size() == 0) {
                        sb.append("-1").append("\n");
                    } else {
                        sb.append(deque.peekFirst()).append("\n");
                    }
                    break;
                    
                case "back" :
                    if(deque.size() == 0) {
                        sb.append("-1").append("\n");
                    } else {
                        sb.append(deque.peekLast()).append("\n");
                    }
                    break;                     
            }
        }
        
        System.out.println(sb);
    }
}
cs
✅ 해결 아이디어
✔ 덱 (Deque)

 

 


🔺 다른 풀이들

- Queue vs Deque 설명에다가 항상 친절한 풀이..🤍

 

[백준] 10866번 : 덱 - JAVA [자바]

www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다

st-lab.tistory.com

 

 

- 덱도 isEmpty() 사용 가능!

 

[백준/BOJ] 10866번: 덱 - JAVA [자바]

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

yermi.tistory.com


💬 느낀 점

덱 언젠가 문제로 한 번 메소드 정리하면 좋겠다.. 고 최근에 생각했는데

금방 만났네..ㅎ

 

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

✔ 덱 메소드..

 

[Java(자바)] Deque(덱/데크) 자료구조

카프카의 소스코드를 보던 중 내부에서 Deque 클래스를 사용한 부분을 보게 되었다. Deque(덱 혹은 데크)은 Double-Ended Queue의 줄임말로 큐의 양쪽으로 엘리먼트의 삽입과 삭제를 수행할 수 있는 자료

soft.plusblog.co.kr

 

 

[Java] Deque (덱/데크) 사용법 및 예제

Deque(덱/데크) 덱은 Double-Ended Queue의 줄임말로 큐의 양쪽에 데이터를 넣고 뺄 수 있는 형태의 자료구조를 의미한다. 하나의 자료구조에 큐(Queue)와 스택(Stack)을 합쳐 놓은 형태라고 생각하면 된다.

hbase.tistory.com

 

반응형