● 문제
● 풀이
스택을 활용하는 대표적인 문제
여는 괄호 '(' 가 들어오면 스택에 쌓고(push) 닫는 괄호 ')' 가 들어오면 지우면(pop) 된다.
주의할 점 : 예를 들어 닫는 괄호가 여는 괄호보다 많이 들어온 경우나 처음부터 닫는 괄호가 들어온 경우에는
스택이 비어있는 상태에서 또 닫는 괄호가 들어오면 빈 스택에 pop을 하게 되므로 오류가 난다.
그래서 스택이 비어있으면 함수를 종료하여야 한다.
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int T = in.nextInt();
for(int i =0; i<T; i++){
System.out.println(solve(in.next()));
}
}
private static String solve(String s) {
Stack<Character> stack = new Stack<>();
for(int i =0; i<s.length(); i++){
char c = s.charAt(i);
if(c == '('){
stack.push(c);
}
else if(stack.empty()){
return "NO";
}
else
stack.pop();
}
if(stack.empty()){
return "YES";
}else
return "NO";
}
}
'백준' 카테고리의 다른 글
[백준] 4949 균형잡힌 세상_ JAVA (0) | 2023.07.07 |
---|---|
[백준] 10988 팰린드롬인지 확인하기_ JAVA (0) | 2023.07.06 |
[백준] 2164 카드2_ JAVA (0) | 2023.07.03 |
[백준] 2839 설탕 배달_ JAVA (0) | 2023.07.03 |
[백준] 11866 요세푸스 문제 0_ JAVA (0) | 2023.06.20 |