T_era

[JAVA] 스택 : 올바른 괄호 본문

Programing/Programers

[JAVA] 스택 : 올바른 괄호

블스뜸 2025. 4. 14. 18:41

문제내용

요약
괄호로 이루어진 문자열이 들어왔을 때 ')'는 항상 '('가 나온 이후에 나와야한다
조건이 충족하면 true 그렇지 않으면 false를 반환해라

접근방법
문자를 하나씩 읽어 '('가 나오면 스택에 넣고 ')'가 나오면 스택에서 빼는 과정을 거치면 쉽게 풀릴 것 같다
만약 ')'가 나왔는데 스택이 비어있거나
문자열이 끝났는데 스택이 비어있지 않으면 올바르지 않은 괄호로 판단하면 해결될 것으로 보인다

구현과정
 
들어온 문자열을 문자형태로 변환하고 스택을 선언

boolean answer = true;
char[] arrs = s.toCharArray();
Stack<Character> stack = new Stack<>();


문자를 하나씩 확인하면서 '('가 나오기전에 ')'가 나오면 false를 반환
문자를 전부 확인한 후에 스택의 상태를 answer를 저장하고 반환하는 코드를 작성

for (Character c : arrs) {
    if (stack.isEmpty()) {
        if (c == ')') return false;
        stack.push(c);
    } else {
        switch (c) {
            case ')': {
                stack.pop();
                break;
            }
            case '(': {
                stack.push(c);
                break;
            }
        }
    }
}
answer = stack.isEmpty();


4.결과

의도한대로 풀리는 것을 확인할 수 있다.

전체코드

import java.util.Stack;

class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        char[] arrs = s.toCharArray();
        Stack<Character> stack = new Stack<>();

        for (Character c : arrs) {
            if (stack.isEmpty()) {
                if (c == ')') return false;
                stack.push(c);
            } else {
                switch (c) {
                    case ')': {
                        stack.pop();
                        break;
                    }
                    case '(': {
                        stack.push(c);
                        break;
                    }
                }
            }
        }
        answer = stack.isEmpty();


        return answer;
    }
}

'Programing > Programers' 카테고리의 다른 글

[JAVA] 스택 : 주식가격  (0) 2025.04.21
[JAVA] 큐 : 프로세스  (0) 2025.04.14
[JAVA] 큐 : 기능개발  (0) 2025.04.14
[JAVA] 스택 : 같은 숫자는 싫어  (0) 2025.04.14
[JAVA] 해시 : 베스트앨범  (1) 2025.04.14