https://www.acmicpc.net/problem/9012
문자열을 끊어 받으면서 단순하게 '(' 가 들어오면 stack에 push해주고 ')' 가 들어오면 stack에 pop을 해주는데 stack이 비워져 있으면 'NO' 출력 후 반복문을 종료하면 된다.
반복문이 끝까지 돌았을 경우에는 stack의 사이즈를 가져와 0이면 'YES' 0이 아니면 '('가 ')' 보다 많은 경우 이기 때문에 'NO' 출력을 하면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Baekjoon_9012_괄호 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int TC = Integer.parseInt(br.readLine());
for (int i = 0; i < TC; i++) {
String str = br.readLine();
String ans = "YES";
Stack<Character> stack = new Stack<>();
for (int j = 0; j < str.length(); j++) {
char tmp = str.charAt(j);
if (tmp == '(') {
stack.push('(');
continue;
}
if (tmp == ')' && !stack.isEmpty()) {
stack.pop();
continue;
}
if (tmp == ')' && stack.isEmpty()) {
ans = "NO";
break;
}
}
System.out.println(stack.size() == 0 ? ans : "NO");
}
br.close();
}
}
'알고리즘' 카테고리의 다른 글
[백준/Java] 2042 : 구간 합 구하기 (2) | 2025.02.17 |
---|---|
[백준/Java] 1012 : 유기농 배추(BFS) (0) | 2025.02.16 |
[백준/Java] 4963 : 섬의 개수(BFS) (0) | 2025.02.16 |
[백준/Java] 2667 : 단지번호붙이기(BFS) (0) | 2025.02.16 |
[백준/Java] 10828 : 스택 (0) | 2025.02.16 |