https://school.programmers.co.kr/learn/courses/30/lessons/12909
괄호의 개수를 가지고 판단할 수 있음. 단, 괄호의 순서를 고려해 주어야 함
코드를 입력하세요
스택을 이용해도 풀 수 있음
- 문자열 split
- '('이면 스택에 넣음
- ')'이면 스택에서 pop
3-1. 이 때 스택이 비어있는 상태였다면 즉시 flase 반환- 모든 문자열을 탐색한 후 스택이 비어있다면 올바른 괄호인 것
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<Integer> stack = new Stack<>();
String[] arr = s.split("");
int length = arr.length;
for(int i=0;i<length;i++){
if(arr[i].equals("(")){
stack.push(1);
}else if(arr[i].equals(")")){
if(!stack.isEmpty()){ //스택이 비어있지 않다면
stack.pop();
}else{
answer = false;
}
}
}
if(!stack.isEmpty()){
answer = false;
}
return answer;
}
}
이 코드는 모든 테스트 케이스는 통과했지만 효율성에서는 탈락했다.
그래서 charAt으로 바꾸어 주었다.
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<Integer> stack = new Stack<>();
for(int i=0;i<s.length();i++){
if(s.charAt(i) == '('){
stack.push(1);
}else{
if(stack.isEmpty()){
answer = false;
}else{
stack.pop();
}
}
}
if(!stack.isEmpty()){
answer = false;
}
return answer;
}
}