문제
풀이
스택 개념을 응용해 풀 수 있다. (자세한 내용은 링크 참고)
스택의 응용: 괄호 검사 문제
괄호가 올바르게 사용되었는지 스택을 사용하여 검사한다. 괄호의 검사 조건은 아래와 같다.조건 1: 왼쪽 괄호의 개수와 오른쪽 괄호의 개수가 동일조건 2: 같은 종류의 괄호에서 왼쪽 괄호는
sysouthelloworld.tistory.com
왼쪽 괄호 '(' 가 나오면 스택에 삽입하고, 오른쪽 괄호 ')' 가 나오면 가장 최근에 삽입된 괄호와 짝을 이뤘음을 표시하기 위해 pop한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
int T=Integer.parseInt(in.readLine());
for(int i=0; i<T; i++) {
Stack<Character> stack=new Stack<>();
char[] inputChar=in.readLine().toCharArray();
boolean vps=true;
for(int j=0; j<inputChar.length; j++) {
char input=inputChar[j];
if(input=='(')
stack.push(input);
//')'일때
else if(stack.empty()) {
vps=false;
break;
}
else
stack.pop();
}
if(!stack.empty())
vps=false;
if(vps)
System.out.println("YES");
else
System.out.println("NO");
}
}
}
if문 대신 switch문으로 풀어도 상관없다
'백준' 카테고리의 다른 글
백준 10773: 제로(java) (0) | 2024.07.12 |
---|---|
백준 28278: 스택 2(java) (0) | 2024.07.12 |
백준 10828: 스택(java) (0) | 2024.07.12 |
백준 1676: 팩토리얼 0의 개수(java) (0) | 2024.07.09 |
백준 11650: 좌표 정렬하기(java) (0) | 2024.07.09 |