이번 문제는 Stack 자료구조에 관한 문제이다.
하지만 저는 Stack을 굳이 써야할까? 라는 생각이들어서 안쓰고 풀어보자 하여 변덕으로 풀었습니다.
문제의 기본 방식은 Stack으로 push, pop을 사용하여 정상적으로 Stack이 비어있으면 YES 출력 아니면 NO입니다.
위 방식이 정석이고 제가 푼 방법은
위 방식에서 ' ( ' 여는 괄호가 나오면 +1 ' ) ' 닫는 괄호가 나오면 -1 입니다. 이렇게 0이면 YES를 출력 아니면 NO를 출력
하지만 여기서 Stack은 0 이하로 내려가지 않는 점을 고려하고
0 이하로 내려가지 않는 조건을 고려하면 닫는 괄호만 나왔을 시 0이기 때문에 따로 조건을 만들어 주었습니다.
추가적인 조건은 result 가 0이 아닐 때 빼주고
닫는 괄호와 여는 괄호의 개수가 맞아야하니 각각의 실행문에 a 와 b를 주어서 비교했습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class b9012 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(bf.readLine());
for(int i =0 ; i<t; i++){
int result =0;
int a = 0;
int b = 0;
String str = bf.readLine();
for(int j = 0; j<str.length(); j++){
if(str.charAt(j)=='('){
result++;
a++;
} else {
if (result!=0){
result--;
}
b++;
}
}
if(result ==0 && a==b){
System.out.println("YES");
} else{
System.out.println("NO");
}
}
}
}
'백준 문제풀이' 카테고리의 다른 글
[백준]11718 (0) | 2024.04.21 |
---|---|
[백준] 1009번 (0) | 2024.04.20 |
[백준]10773 (0) | 2024.04.15 |
[백준] 4673번 (0) | 2024.04.12 |
[백준] 1021번 (0) | 2024.04.09 |