올바른 괄호

https://programmers.co.kr/learn/courses/30/lessons/12909

음.. 뭐 그렇게 어려운 문제는 아니라고 생각이 듭니다만? 효율성테스트? 요놈에서 막혔네??

class Solution {
    boolean solution(String s) {
        boolean answer = true;

        String[] arr = s.split("");
        int cnt=0;
        for(int i=0; i<arr.length; i++){
            if(arr[i].equals("("))
                cnt++;
            else{
                if(cnt<=0)
                    return false;
                cnt--;
            }
        }

        if(cnt>=1)
            return false;
        
        return answer;
    }
}

그러면 맨 처음에 생각이 들었던 스택을 활용해보쟈!

는 스택을 활용해도 계속해서 시간초과가 났다.. 이건 그러면 string.split의 사용때문인건가?

라고 생각해서 character형태의 스택을 활용 → 어느정도는 참고 ㅠ

import java.util.*;
class Solution {
    boolean solution(String s) {
        boolean answer = true;

        // String[] arr = s.split("");
        
        // Stack<String> stack = new Stack<>();
        Stack<Character> stack = new Stack<>();
        for(int i=0; i<s.length(); i++){
            if(s.charAt(i) == '(')
                stack.push(s.charAt(i));
            else{
                if(stack.isEmpty()){
                    return false;
                }else
                    stack.pop();
            }
        }
        
        answer = stack.isEmpty() ? true : false;
        
        return answer;
    }
}

Last updated

Was this helpful?