[백준 JAVA] 9012번 풀이 - 괄호 (✨✨✨)
by mini_minpackage quiz;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
/**
* 괄호.
* 괄호 문자열 = '(' , ')' 만으로 구성되는 문자열이다.
* 괄호 모양이 바른 것 = 올바른 괄호 문자열 (vps)
* 한 쌍의 괄호 기호로된 문자열 "()" : 기본 vps
* x가 vps 라면 "(x)" 문자열도 vps 가 된다.
* 그리고 두 vps x와 y 를 접합 시킨 문자열 xy 도 vps 가 된다. (vps + vps => vps)
* 입력으로 주어진 괄호 문자열이 vps 인가 판단하는 yes, no 프로그램을 만드시오.
*/
public class _9012 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int testCaseCount = Integer.parseInt(br.readLine());
for ( int i = 0; i < testCaseCount; i++ ){
System.out.println(searchBracket(br.readLine()));
}
}
public static String searchBracket(String word) {
Stack<Character> stack = new Stack<>();
for ( int i = 0; i < word.length(); i++ ){
char c = word.charAt(i);
if(c=='('){
stack.push(c);
} else if (stack.empty()){
return "NO";
} else {
stack.pop();
}
}
if(stack.empty()){
return "YES";
} else {
return "NO";
}
}
}
풀이
"(" 가 들어오는 경우 = stack 에 push 하고
")"가 들어오는 경우 = stack 에서 pop 해서 빼낸다.
(경우의 수 1) 그럼 vps 인 경우는 stack 이 비어있을 것이다. (stack.empty==true)
(경우의 수 2) "(" 가 더 많은 경우, stack 은 empty 가 아닐 것이다.
(경우의 수 3) 만약, stack 이 이미 비어있는 상태가 확인된다면, 더 이상 빼낼 것이 없다는 뜻으로 NO 값을 return 한다.
'매일매일 알고리즘 공부' 카테고리의 다른 글
[백준 JAVA] 4949번 풀이 - 균형잡힌 세상 (0) | 2023.10.11 |
---|---|
[백준 JAVA] 28278번 풀이 - 스택2 (0) | 2023.10.06 |
[백준 JAVA] 17103번 풀이 - 골드바흐 파티션 (골드바흐의 추측) (1) | 2023.09.25 |
[백준 JAVA] 4948번 풀이 - 베르트랑 공준 (0) | 2023.09.22 |
[백준 JAVA] 1929번 풀이 - 소수 구하기 (에라토스테네스의 체) (0) | 2023.09.13 |
블로그의 정보
개발자 미니민의 개발로그
mini_min