Baekjoon Online Judge - 9012
Review
- 굳이 스택으로 풀지 않아도 될 것 같은데 연습 겸 일부러 저번에 했던 스택 문제를 응용해서 풀었다.
- ‘)’ 처리가 정말 중요했던 문제. 정말 고생 많이 했다. 17~23번 라인이 핵심인데, 만약 문자가 ‘)’인 경우 스택이 비어있지 않으면 무조건 false 처리를 한다.
- 맞왜틀일 경우 반례를 보자.
Code (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
| import java.util.*;
public class Main { public static void main(String args[]){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String s; while(n-->0) { boolean isVPS = true; Stack stack = new Stack(); s = sc.next(); for(int j = 0; j < s.length(); j++) { if(s.charAt(j)=='(') { stack.push(1); } else if(s.charAt(j)==')') { if(stack.size != 0) { stack.pop(); } else { isVPS = false; } } } if (stack.size !=0) { isVPS = false; } if(isVPS) { System.out.println("YES"); }else { System.out.println("NO"); } } sc.close(); } static class Stack { private int size = 0; private SNode top = null; private class SNode { int data; private SNode next; } public void push(int x) { SNode node = new SNode(); node.data = x; node.next = top; top = node; size++; } public void pop() { top = top.next; size--; } } }
|