Dev.baelanche

[백준 2164] 카드2 본문

Data Structure & Algorithm/PS - JAVA

[백준 2164] 카드2

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

 

큐로 구현하는 문제이다.

 

1부터 n 까지 큐에 담고

- 첫번째 케이스에 pop 한다.

- 두번째 케이스에 pop 하고 pop 된 수를 push 한다.

 

위 두가지 케이스를 반복하여 큐에 노드가 1개 남을때 출력해주면 된다.

 

직접 구현한 큐를 썼다.

 

 

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();
        Main q = new Main();
        
        for(int i=1; i<=n; i++)
            q.push(i);
        
        for(int i=0; !q.isEmpty(); i++) {
            if(q.size() == 1) {
                System.out.println(q.front());
                break;
            }
            
            if(i%2==0) q.pop();
            else {q.push(q.front()); q.pop();}
        }
        sc.close();
    }
}
반응형

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

[백준 3034] 앵그리 창영  (0) 2019.04.07
[백준 1966] 프린터 큐  (0) 2019.04.06
[백준 10845] 큐  (0) 2019.04.06
[백준 9507] Generations of Tribbles  (0) 2019.04.06
[백준 2631] 줄세우기  (0) 2019.04.06
Comments