Dev.baelanche

[백준 9012] 괄호 본문

Data Structure & Algorithm/PS - JAVA

[백준 9012] 괄호

baelanche 2019. 4. 3. 20:17
반응형

 

스택 관련 문제이다.

스택에 '(' 기호가 들어오면 모두 push하고, ')' 기호가 들어오면 스택의 top이 '(' 일때 push 한다.

입력이 끝났을때 스택이 비어있으면 VPS 조건이 성립한다.

 

 

public class Main {
    
    Node head;
    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 >= 1)
            node.prev = head;
        head = node;
        size++;
    }

    public Object pop() {
        if(size == 0) {
            return -1;
        }

        Node temp = head;
        head = head.prev;
        size--;
        
        return temp.value;
    }

    public Object top() {
        if(size == 0) {
            return -1;
        }
        return head.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 = "top [";
        Node temp = head;
        for(int i=0; i<size; i++) {
            str += temp.value;
            if(i != size-1) {
                temp = temp.prev;
                str += ", ";
            }
        }
        return str += "] bottom";
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int t = sc.nextInt();
        Main s = new Main();
        
        while(t-->0) {
            String temp = sc.next();
            String[] ps = new String[temp.length()];
            for(int i=0; i<ps.length; i++)
                ps[i] = String.valueOf(temp.charAt(i));
            
            for(int i=0; i<ps.length; i++) {
                if(ps[i].equals("("))
                    s.push(ps[i]);
                if(ps[i].equals(")")) {
                    if(s.top().equals("("))
                        s.pop();
                    else {
                        s.push("fail~~");
                        break;
                    }
                }
            }
            
            if(s.isEmpty())
                System.out.println("YES");
            else System.out.println("NO");
            
            s.clear();
        }
        sc.close();
    }
}

 

직접 구현한 스택을 수정해가며 했다.

반응형

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

[백준 1929] 소수 구하기  (0) 2019.04.04
[백준 11052] 카드 구매하기  (0) 2019.04.03
[백준 10828] 스택  (0) 2019.04.03
[백준 11727] 2xn 타일링 2  (0) 2019.04.02
[백준 11726] 2xn 타일링  (0) 2019.04.02
Comments