Gidhub BE Developer

[Programmers] 올바른 괄호

2018-07-25
goodGid

Problem

Problem URL : 올바른 괄호


[1] Answer Code (18. 07. 25)

bool solution(string s){
    bool answer = true;
    
    int cnt = 0;
    for(int i=0; i<s.length(); i++){
        s[i] == '(' ? cnt ++ : cnt --;
        if(cnt < 0) break;
    }
    
    if(cnt != 0)
        answer = false;
    
    return answer;
}
  • 무난하게 풀었다.

[2] Answer Code (20. 01. 30)

class Solution {

    private Character LEFT = '(';
    private Character RIGHT = ')';

    boolean solution(String s) {

        if (s.charAt(0) == RIGHT || s.length() % 2 != 0) {
            return false;
        }

        char[] toCharArray = s.toCharArray();
        Stack<Character> stack = new Stack<>();
        stack.add(toCharArray[0]);

        for (int i = 1; i < toCharArray.length; i++) {

            if (stack.isEmpty()) {
                stack.add(toCharArray[i]);
                continue;
            }

            Character peek = stack.peek();

            if (peek == LEFT && toCharArray[i] == LEFT) {
                stack.add(toCharArray[i]);
            } else if (peek == LEFT && toCharArray[i] == RIGHT) {
                stack.pop();
            } else if (peek == RIGHT && toCharArray[i] == LEFT) {
                return false;
            } else if (peek == RIGHT && toCharArray[i] == RIGHT) {
                return false;
            }
        }

        return stack.isEmpty();
    }
  • 괄호 문제를 보자마자 바로 Stack을 떠올렸는데

    사실 [1] Answer Code 처럼 푸는 게 더 효율적이다.


Comments

Index