반응형
출처: https://www.acmicpc.net/problem/9012
Input
6
(())())
(((()())()
(()())((()))
((()()(()))(((())))()
()()()()(()()())()
(()((())()(
Output
NO
NO
YES
NO
YES
NO
1) 여는 괄호인 경우
→ push
2) 닫는 괄호인 경우
→ pop해서 여는 괄호인지 확인
3) 주어진 괄호 문자열을 모두 처리한 후
→ 스택에 남아 있는 원소 확인
import java.util.Scanner;
class Stack{
int top;
int[] stack;
public Stack(int size) {
top = -1;
stack = new int[size];
}
public void push(int x) {
stack[++top] = x;
}
public boolean pop() {
if( top == -1) {
return true;
}
top--;
return false;
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = Integer.parseInt(sc.nextLine());
String[] str = new String[T];
for(int i=0; i<T ;i++) {
str[i] = sc.nextLine();
}
for(int j=0; j<T; j++) {
Stack st = new Stack(str[j].length());
boolean flag = true;
for(int i=0; i<str[j].length(); i++) {
if(str[j].charAt(i) == '(') {
st.push(1);
}else {
if(st.pop()) {
str[j] = "NO";
flag = false;
break;
}
}
}
if(flag) {
if(st.top != -1) {
str[j] = "NO";
}else {
str[j] = "YES";
}
}
st = null;
}
for(int j=0; j<T; j++) {
System.out.println(str[j]);
}
}
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 1652 누울 자리를 찾아라 (0) | 2021.02.24 |
---|---|
[BOJ] 백준 1205 등수 구하기 (0) | 2021.02.24 |
[BOJ] 백준 1193 분수찾기 (0) | 2021.02.24 |
[BOJ] 백준 1021 회전하는 큐 (0) | 2021.02.24 |
[BOJ] 백준 5430 AC (0) | 2021.02.24 |
댓글