문제링크
https://www.acmicpc.net/problem/9012
package BOJ;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main_9012 {
static int T;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
T = Integer.parseInt(br.readLine());
for(int t=0;t<T;t++){
String str = br.readLine();
Stack<Character> stack = new Stack<>();
int i,size;
for(i=0, size = str.length();i<size;i++){
if(str.charAt(i) == '(') stack.push(str.charAt(i));
else {
if(!stack.isEmpty()) stack.pop();
else break;
}
}
if(i == size && stack.isEmpty()){
System.out.println("YES");
}
else
System.out.println("NO");
}
}
}
괄호 짝궁을 찾아야한다.
이렇게 왼쪽 괄호 넣어주고?
이렇게 오른쪽 괄호 들어오면 빼주고?
이렇게 해서 체크를 진행한다.
만약에 ( 가 안들어왔는데 )가 들어오면 못빼니까? (짝수가 안맞아서)
결국 )가 더 많으면 isEmpty()인 경우 더 뺄려고 해서 안되고
(가 더들어오면 for문은 끝나겠지만
짝수가 맞을려면 for문이 끝났을 때 스택이 다 안비어있어서 안된다.
'알고리즘 > 백준' 카테고리의 다른 글
[JAVA]백준_10816_숫자카드2 (0) | 2021.08.07 |
---|---|
[JAVA]백준_1920_수찾기 (0) | 2021.08.07 |
[JAVA]백준_14722_우유도시 (0) | 2021.07.18 |
[JAVA]백준_2644_촌수계산 (0) | 2021.06.26 |
[JAVA]백준_2583_영역구하기 (0) | 2021.06.26 |