본문 바로가기
Algorithm PS (JAVA)/Stack & Queue

[JAVA/Programmers] 12909 올바른 괄호 (자바/프로그래머스)

by ʚ⇜❅🎕̈❄⇝ɞ 2024. 5. 23.
728x90
반응형

Programmers 프로그래머스 12909 올바른 괄호 문제는 '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호인지 구하는 문제이다. 스택/큐 유형의 문제로 난이도는 Level 2이다.

 

Programmers 12909 올바른 괄호 문제 정보

출처

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

알고리즘 분류

- 스택/큐 (Stack/Queue)

난이도

- Level 2

 

올바른 괄호 문제 요약

  • 문자열 s가 주어졌을 때, 괄호가 바르게 짝지어졌는지 구한다.
  • 문자열 s의 길이 : 100,000 이하의 자연수
  • 문자열 s는 '(' 또는 ')' 로만 이루어져 있다.

문제 풀이 과정

문자열의 길이가 홀수이면 어떤 조합이든 짝을 지을 수 없으므로 false 를 early return 한다.

괄호 문자를 하나 씩 순회하기 위해 char 배열로 변환한다.

 

괄호가 '(' 면 stack 에 push, ')' 면 stack 에 있는 '(' 를 pop 한다.

')' 차례인데, stack 이 비어있다면, 짝이 맞지 않으므로 false 를 반환한다.

 

마지막 stack.isEmpty() 를 확인한다. false 인 경우는 '(' 가 남아있음을 뜻한다.

 

코드 및 설명
import java.util.Stack;

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        
        // 홀수개면 짝을 지을 수 없다
        if (s.length() % 2 != 0) {
            return false;
        }
        
        char[] brackets = s.toCharArray();
        
        Stack<Character> stack = new Stack<>();
        for (char bracket : brackets) {
            if (bracket == '(') {
                stack.push(bracket);
                continue;
            }
        
            // ')' 만 있을 때
            if (stack.isEmpty()) {
                return false;
            }
                       
            stack.pop();
        }
        
        // '(' 가 남아있는 경우
        return stack.isEmpty();
    }
}

 

Programmers 프로그래머스 12909 올바른 괄호 문제를 자바 Java 로 풀어보았다. 난이도는 Level 2 이다.

728x90
반응형

댓글