알고리즘
[백준] 9012번 괄호 _ JAVA ( 주석 설명 ) 본문
풀이
1) 열린 괄호가 먼저이므로 '(' 가 나오면 stack에 push 한다.
2) ')' 가 나오면 stack에 pop 한다.
이 때 stack.empty() 이면 바로 false 이다. ')' 가 더 많음
3) 문자열 전체 길이를 반복했을 때 stack에 값 존재 유무에 따라 return을 한다.
코드
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 br = new BufferedReader(new InputStreamReader(System.in)); //빠른 입력을 위해 버퍼를 이용해 입력을 받는다.
int T = Integer.parseInt(br.readLine());
for(int i=0;i<T;++i){
String str = br.readLine();
if(solve(str) == true)
System.out.println("YES");
else
System.out.println("NO");
}
}
private static boolean solve(String str) {
char[] str_char = str.toCharArray(); //개별 문자 탐색을 위해 문자 배열을 만든다.
Stack<Character> stack = new Stack<>();
for(int i=0;i<str_char.length;++i) {
if (str_char[i] == '(') {
stack.push('(');
}
else {
//')' 수가 더 많을 경우 empty 가 된다.
if (stack.empty())
return false;
stack.pop();
}
}
//스택에 값이 남아있으면
if(!stack.empty())
return false;
//스택에 값이 없으면
//'(' , ')' 수가 맞으면 스택에 값이 없다.
else
return true;
}
}
'백준 - JAVA > 스택' 카테고리의 다른 글
[백준] 1874번 스택 수열 _ JAVA ( 주석 설명 ) (0) | 2023.03.17 |
---|---|
[백준] 4949번 균형잡힌 세상 _ JAVA ( 주석 설명 ) (0) | 2023.03.15 |
[백준] 10773번 제로 _ JAVA ( 주석 설명 ) (0) | 2023.03.10 |
[백준] 10828번 스택 _ JAVA ( 주석 설명 ) (0) | 2023.03.09 |