[프로그래머스, 12909] 올바른 괄호 (java)
Problem Solving/Programmers

[프로그래머스, 12909] 올바른 괄호 (java)

728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

728x90

메모리: 52.5 MB, 시간: 6.07 ms

사용 알고리즘: 스택, 큐

 

알고리즘은 스택과 큐이지만

어차피 문자열에서 열린 괄호가 나오면 스택에 넣어주고, 닫힌 괄호가 나오면 스택에서 빼주는 형식으로 동작한다.

(스택에 열린 괄호만 계속 들어왔다 나감)

즉, 스택에 어떤 값이 들어있는지가 중요한 게 아니라 스택에 몇 개가 들어있는지가 중요한 것이기 때문에

스택을 사용하지 않고 변수에 열린 괄호가 몇 개인지만 저장해 주었다.

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

        int count = 0; // 열린 괄호 개수
        
        char[] arr = s.toCharArray();
        for(int i = 0; i < arr.length; i++) {
            // 열린 괄호인 경우
            if(arr[i] == '(') count++;
            // 닫힌 괄호인 경우
            else {
                if(count == 0) { // 열려있는 괄호가 없다면 올바르지 않은 괄호
                    answer = false;
                    break;
                }
                count--;
            }
        }
        
        // 괄호가 다 닫히지 않았다면 올바르지 않은 괄호
        if(count != 0) answer = false;

        return answer;
    }
}
728x90