9012번
문제
- 입력받은 괄호 문자열이 올바른 문자열인지 확인하는 문제.
문제 해결 순서
- 입력받은 괄호 문자열을 반복문을 돌며 스택에 하나씩 넣음
- 여는 괄호면 스택에 추가, 닫는 괄호면 스택에서 제거
- 스택이 비어있는데 닫는 괄호차례이면 잘못된 괄호 문자열이므로 return false
- 반복문이 끝나고 스택이 비어있으면 올바른 괄호 문자열이므로 return true
import java.io.*;
import java.util.Scanner;
import java.util.Stack;
public class Main {
static Stack<String> stack = new Stack<>();
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
scan.nextLine();
for (int i = 0; i < n; i++) {
stack = new Stack<>();
String temp = scan.nextLine();
if (check(temp)){
System.out.println("YES");
}
else{
System.out.println("NO");
}
}
}
static boolean check(String temp){
if (temp.charAt(0) == '(') {
stack.add(String.valueOf(temp.charAt(0)));
for (int j = 1; j < temp.length(); j++) {
if (temp.charAt(j) == '(') {
stack.add(String.valueOf(temp.charAt(j)));
} else {
if (!stack.isEmpty()) {
stack.pop();
} else{
return false;
}
}
}
if(!stack.isEmpty()){
return false;
}
else{
return true;
}
}
return false;
}
}