문제 출처 : https://www.acmicpc.net/problem/9012
문제
설명
괄호 짝 판별 문제는 대표적인 스택문제이기 때문에, 스택 사용하신다면 큰 문제 없이 풀 수 있으실 것입니다.
여기서 키 포인트 두 가지는 다음과 같습니다.
1. VSP이려면 "(" 와 ")" 의 갯수가 동일해야 합니다.
2. 갯수와 상관없이 왼쪽에서 오른쪽 방향으로 진행하는 도중에 "(" 의 갯수보다 ")" 의 갯수가 더 많이 나온다면 그 뒤는 볼 것도 없이 VSP가 아닙니다.
이것을 스택에 구현하면 됩니다.
코드
import java.util.Scanner;
import java.util.Stack;
public class BOJ_9012{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
Stack<String> stack = new Stack<>();
String[] answer = new String[num];
for(int i=0; i<num; i++) {
String s = sc.next();
String[] arr = s.split("");
for(int j=0; j<arr.length; j++) {
if(stack.empty())//스택이 비어있으면 일단 푸시
stack.push(arr[j]);
else {
if(arr[j].equals("("))
stack.push(arr[j]);
else{
if(stack.peek().equals("(")) //짝이 맞음
stack.pop();
else
stack.push(arr[j]);
}
}
}
if(stack.empty())
answer[i]="YES";
else
answer[i]="NO";
stack.clear();
}
sc.close();
for(String s : answer)
System.out.println(s);
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[BOJ][JAVA] 7568 - 덩치 (0) | 2021.09.21 |
---|---|
[BOJ][JAVA] 1181 - 단어 정렬 (0) | 2021.09.21 |
[BOJ][JAVA] 1120 - 문자열 (0) | 2021.09.18 |
[BOJ][JAVA] 2920 - 음계 (0) | 2021.09.18 |
[BOJ][JAVA] 3109 - 빵집 (0) | 2021.09.17 |