https://www.acmicpc.net/problem/9012
1. 아이디어
괄호가 서로 소거되서 완전히 사라지면 올바른 문자열이 되는 문제로 Stack 자료구조를 활용하면 간단하게 해결할 수 있다.
2. 문제풀이
열린 괄호면 Stack에 push하고 닫힌 괄호면 Stack이 비어있지 않을 때 pop을 하면 괄호가 쌍을 이루는 것을 구현할 수 있다. 최종적으로 Stack이 비어있어야 올바른 문자열이 된다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= T; tc++) {
Deque<Character> stack = new ArrayDeque<>();
char[] input = br.readLine().toCharArray();
boolean flag = true;
for (char c : input) {
if (c == '(') {
stack.push(c);
} else {
if (stack.isEmpty()) {
flag = false;
break;
} else {
stack.pop();
}
}
}
if (!stack.isEmpty()) flag = false;
if (flag) bw.write("YES\n");
else bw.write("NO\n");
}
bw.flush();
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 2696번 - 중앙값 구하기 [Java] (0) | 2025.02.12 |
---|---|
[백준] 10828번 - 스택 [Java] (0) | 2025.02.12 |
[백준] 4949번 - 균형잡힌 세상 [Java] (0) | 2025.02.11 |
[백준] 3986번 - 좋은 단어 [Java] (0) | 2025.02.11 |
[백준] 10799번 - 쇠막대기 [Java] (0) | 2025.02.11 |