강의로 돌아가기
Park Minchul

효율성 1번이 계속 실패 하네요ㅠㅠ(코드 주의)

import java.util.*;

class Solution {
    boolean solution(String s) {
        if(!isValid(s)) return false;

        Stack<Character> brackets = new Stack<>();

        // n
        for(int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if(isOpened(c)) {
                brackets.push(c);
            } else if(brackets.isEmpty()) {
              return false;
            } else {
                char oldC = brackets.pop();
                if(!isOpened(oldC)) {
                    return false;
                }
            }
        }

        return brackets.isEmpty();
    }

    private boolean isOpened(char c) {
        return c == '(';
    }

    private boolean isValid(String s) {
        if(s.length() % 2 != 0) return false;

        if(!s.isEmpty()) {
            return isOpened(s.charAt(0)) && !isOpened(s.charAt(s.length() - 1));
        } else {
            return true;
        }

    }
}

제가 보기에는 O(n)이하로 최적화 하기에는 힘들어 보이는데...
뭔가 다른 것이 있을까요?

0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.