Dev.baelanche

[백준 10845] 큐 본문

Data Structure & Algorithm/PS - JAVA

[백준 10845] 큐

baelanche 2019. 4. 6. 13:43
반응형

 

자료구조 중 선입선출의 특징을 가진 큐 문제다.

 

큐를 문제에 맞게 직접 구현하여 풀었다.

 

 

public class Main {

    Node head;
    Node tail;
    int size = 0;
    
    class Node {
        Node prev;
        Object value;
        
        Node(Object value) {
            this.value = value;
        }
    }
    
    public void push(Object value) {
        Node node = new Node(value);
        if(size == 0) {
            head = node;
            tail = node;
        }
        tail.prev = node;
        tail = node;
        size++;
    }
    
    public Object pop() {
        if(size == 0) return -1;
        Node temp = head;
        head = head.prev;
        size--;
        return temp.value;
    }
    
    public Object front() {
        if(size == 0) return -1;
        return head.value;
    }
    
    public Object back() {
        if(size == 0) return -1;
        return tail.value;
    }
    
    public int size() {
        return size;
    }
    
    public boolean isEmpty() {
        if(size == 0) return true;
        return false;
    }
    
    public void clear() {
        head = null;
        size = 0;
    }
    
    public String toString() {
        String str = "front [";
        Node temp = head;
        for(int i=0; i<size; i++) {
            str += temp.value;
            if(i != size -1)
                str += ", ";
            temp = temp.prev;
        }
        return str + "] rear";
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        sc.nextLine();
        
        Main q = new Main();
        
        while(n-->0) {
            String str = sc.nextLine();
            if(str.contains("push")) {
                int push = Integer.parseInt(str.split(" ")[1]);
                q.push(push);
            } else if(str.contains("pop")) {
                System.out.println(q.pop());
            } else if(str.contains("size")) {
                System.out.println(q.size());
            } else if(str.contains("empty")) {
                if(q.isEmpty()) System.out.println(1);
                else System.out.println(0);
            } else if(str.contains("front")) {
                System.out.println(q.front());
            } else if(str.contains("back")) {
                System.out.println(q.back());
            }
        }
        sc.close();
    }
}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 1966] 프린터 큐  (0) 2019.04.06
[백준 2164] 카드2  (0) 2019.04.06
[백준 9507] Generations of Tribbles  (0) 2019.04.06
[백준 2631] 줄세우기  (0) 2019.04.06
[백준 11055] 가장 큰 증가 부분 수열  (0) 2019.04.06
Comments