티스토리 뷰

알고리즘/백준

[백준] 9012번 괄호

머어하지 2018. 11. 18. 20:38

생각

Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q9012.java 괄호의 짝이 맞는지 판단하여 맞다면 'YES' 맞지 않다면 'NO'를 출력하여라.


처음 생각

꼭 Stack으로 풀지 않아도 상관없지만 분류가 Stack으로 되어있으므로 구현하여 풀었다. '('가 들어온다면 push를 ')'가 들어온다면 pop을 해주었다. ')'가 들어왔을 때 Stack의 size가 0이면 짝이 맞지 않는걸로 판단하였다.

▶ 모든 기능이 필요한게 아니므로 push, pop, size만 구현하였다.


방안

1) Java 풀이


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
package baekjoon.q1000;
 
import java.util.Scanner;
 
public class Q9012 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Stack<Integer> stack = new Stack<>();
        int tc = sc.nextInt();
        for(int i=0;i<tc;i++){
            String t = sc.next();
            stack.clear();
            for(int j=0;j<t.length();j++){
                if(t.charAt(j)=='('){
                    stack.push(1);
                }else{
                    // 항상 짝이 있어야하므로 미리 ( 가 들어와있지 않았다면 실패
                    if(stack.size()==0){
                        stack.push(1);
                        // 실패시 바로 종료시키기
                        break;
                    }else stack.pop();
                }
            }
            if(stack.size()!=0System.out.println("NO");
            else System.out.println("YES");
        }
    }
}
 
// 필요한 기능만 구현
class Stack<T>{
    private Node<T> top;
    private int size;
 
    void clear(){
        size = 0;
        top = null;
    }
    int size(){
        return size;
    }
    void push(T data){
        if(size==0) top = new Node(data,null);
        else top = new Node(data,top);
        size++;
    }
 
    T pop(){
        if(size==0return null;
        else{
            T t = top.data;
            top = top.prev;
            size--;
            return t;
        }
    }
 
    private class Node<T>{
        T data;
        Node prev;
        Node(T data, Node prev){
            this.data = data;
            this.prev = prev;
        }
    }
}
 


'알고리즘 > 백준' 카테고리의 다른 글

[백준] 2589번 보물섬  (0) 2018.11.22
[백준] 10799번 쇠막대기  (0) 2018.11.19
[백준] 10953번 A+B -6  (4) 2018.11.16
[백준] 10951번 A+B - 4  (0) 2018.11.16
[백준] 2839번 설탕 배달  (0) 2018.11.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday