옌의 로그

[Algorithm] 올바른 괄호 본문

스터디/알고리즘

[Algorithm] 올바른 괄호

dev-yen 2025. 8. 27. 19:50

문제

[프로그래머스] 올바른 괄호


사용 알고리즘

- 스택 자료구조 (를 쓰지 않아도 가능) 


해결방법

  • '(' 이 나오면 스택에 데이터 인풋 (암거나 괜찮다)
  • ')' 이 나오면 스택에서 데이터 pop
  • 스택이 최종적으로 비어있다면 모든 쌍이 맞은 것으로 판단
  • But? >> 스택을 쓰지 않고, 단순하게 int 변수 +- 로도 가능


소스코드

사용언어 : Java

 

1. stack 사용 코드

class Solution {
    boolean solution(String s) {
        Deque<Integer> st = new ArrayDeque<>();
        
        for(char c : s.toCharArray()) {
            if (c == '(')
                st.push(1);
            else {
                if (st.isEmpty()) 
                    return false;
                else
                    st.pop();
            }
                
        }
                    
        if (st.isEmpty()) return true;

        return false;
    }
}

 

2. stack 사용 x 코드

class Solution {
    boolean solution(String s) {
        int balance = 0;
        for (int i = 0, n = s.length(); i < n; i++) {
            char c = s.charAt(i);
            if (c == '(') {
                balance++;
            } else {
                if (balance == 0) return false; // 닫는 게 먼저 나오면 실패
                balance--;
            }
        }
        
        return balance == 0;
    }
}

 

 

 

한줄평

스택/큐 섹션에 있으니 당연히 스택으로 푼 건데,

스택을 안써도 풀 수 있는 문제였다. ㅋㅋ 고정관념에 갇혀버려~

 

Comments