-
[9012] 괄호 - Java알고리즘 연습 2022. 2. 10. 14:40
1. 문제
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
2. 풀이
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import javax.tools.Tool; public class Main { // Member Field private int size; private ArrayList<String> stack; // Constructor public Main() { super(); } public Main(int size) { super(); this.size = size; this.stack = new ArrayList<String>(); } // main public static void main(String[] args) throws NumberFormatException, IOException { // Import BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); // Instanciate the main class Main tool = new Main(0); // Read test case int cases = Integer.parseInt(br.readLine()); // Analyze each case using iteration for(int i = 0; i < cases; i++) { String result = tool.isVps(br.readLine()); sb.append(result).append('\n'); } // Print results System.out.println(sb); } // isVps method public String isVps(String ps) { int length = ps.length(); for(int i = 0; i < length; i++) { String p = Character.toString(ps.charAt(i)); // if p is "(", then push if(p.equals("(")) { push(p); } // if p is ")" and isEmpty, then NO. else if (isEmpty()){ return "NO"; } // if p is ")" and isEmpty, then NO. else { pop(); } } if(isEmpty()) { return "YES"; } else { size = 0; return "NO"; } } // pop method public void pop() { stack.remove(size-1); size--; } // push method public void push(String p) { stack.add(p); size++; } // isEmpty method public boolean isEmpty() { if(size == 0) { return true; } else { return false; } } }
3. 배운점
4. 개선할 점
'알고리즘 연습' 카테고리의 다른 글
[11767] 접미사 배열 - Java (0) 2022.02.15 [10845] 큐 - Java (0) 2022.02.10 [9083] 단어 뒤집기 - Java (0) 2022.02.10 [10828] 스택 - Java (0) 2022.02.09 [11651] 좌표 정렬하기2 - Java (0) 2022.02.08