[programmers] 올바른 괄호

프로그래머스 올바른 괄호

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

효율성 검토시 String 보다는 Char로

오늘도 기록하는 나의 실패 기록일지 !

.split("") 으로 입력을 받고 비교를 하는데 효율성이 모두 fail이 났다

질문하기를 참고하여 .charAt 바꾸고 비교를 하더니 모두 성공하였다.

역시 Reference type 보다는 Primitive Type 연산이 더 빠른 것 같다.

아래는 효율성 실패/성공한 두 케이스이며 정확성은 모두 success 이다!

아래는 효율성 fail이 된 코드이다!

boolean solution(String s) {

    String[] brackets = s.split("");

    Stack<String> stack = new Stack<>();

    for (String bracket : brackets) {

        if (stack.size() > brackets.length) {
            return false;
        }

        if (!stack.isEmpty()) {
            String last = stack.peek();
            if (last.equals("(") && bracket.equals(")")) {
                stack.pop(); // 뿌요뿌요 터트리기
                continue;
            }
            stack.push(bracket);
            continue;
        }
        stack.push(bracket);
    }

    out.println("stack = " + stack);
    if (stack.isEmpty()) {
        return true;
    }

    return false;
}

아래는 효율성 성공한 케이스 이다

boolean solution2(String s) {

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

    for (int i = 0; i < s.length(); i++) {

        char bracket = s.charAt(i);

        if (!stack.isEmpty()) {
            char last = stack.peek();
            if (last == '(' && bracket == ')') {
                stack.pop();
                continue;
            }
            stack.push(bracket);
            continue;
        }
        stack.push(bracket);
    }

    if(stack.isEmpty()) return true;
    return false;
}




© 2020.12. by 따라쟁이

Powered by philz