자료 구조, 문자열, 스택
괄호 : Silver4
https://www.acmicpc.net/problem/9012
풀이
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
String str = br.readLine();
bw.write(checkParentheses(str));
}
bw.newLine();
bw.flush();
bw.close();
}
private static String checkParentheses(String str) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (ch == '(') {
stack.push(ch);
} else if (ch == ')') {
if (stack.isEmpty()) {
return "NO\n"; // 여는 괄호 없이 닫는 괄호가 나올 경우
} else {
stack.pop();
}
}
}
if (stack.isEmpty()) {
return "YES\n"; // 괄호가 쌍을 이룸
} else {
return "NO\n"; // 여는 괄호가 남아있음
}
}
}
ㄴ 스택을 이용하였다.
문제점 : 괄호의 여는 부분과 닫는 부분의 개수를 카운팅하여 문제를 풀려고 하였더니 예제입력2로 테스트 시 출력결과가 맞지 않게 나왔다.
해결 방법 : 혹시 스택을 쓸 수 있을까 생각해서 스택을 이용하여서 해결하였다.
깨달은 바 : 여러가지 입력을 테스트하면서 문제를 풀어야겠다는 생각이 들었다.
'코딩테스트 > programming_JAVA' 카테고리의 다른 글
[Java] baekjoon_1874 : 스택 수열 (1) | 2024.01.03 |
---|---|
[Java] baekjoon_1676 : 팩토리얼 0의 개수 (1) | 2024.01.01 |
[Java] baekjoon_1978 : 소수 찾기 (1) | 2023.12.29 |
[Java] baekjoon_1654 : 랜선 자르기 (0) | 2023.12.29 |
[Java] baekjoon_1181 : 단어 정렬 (0) | 2023.12.25 |