티스토리 뷰
생각
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()!=0) System.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==0) return 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