알고리즘 연습
[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. 개선할 점