문제 풀이/프로그래머스

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

27200 2024. 4. 24. 23:18

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


풀이

import java.util.*;
class Solution {
    boolean solution(String s) {
        boolean answer = true;

        Queue<Character> q = new LinkedList<>();

        for(int i = 0; i < s.length(); i++){
            if(s.charAt(i) == '('){
                q.add('(');
            }else{
                if(q.isEmpty()){
                    answer = false;
                    break;
                }
                char temp = q.poll();
                if(temp == ')'){
                    answer = false;
                    break;
                }
            }
        }

        if(!q.isEmpty()){
            answer = false;
        }

        return answer;
    }
}

 

순서대로 입력을 처리하기 위해 큐를 만든다.

이후 문자를 하나씩 분리해서 (이면 넣어주고 )이면 빼는 작업을 한다.

1. )이 들어왔는데 큐가 비어있다면 옳지 않은 접근이다 -> false 반환 후 반복 종료

2. )이 들어왔는데 큐에서 나온 것이 ) 라면 괄호가 올바르지 못한 것이다. )는 쌍이 있어야 하기 때문이다.  -> false 반환 후 반복 종료

3. 반복을 모두 종료했는데 큐에 남은 것이 있다면 (라는 소리이다. 즉 옳지 못한 접근이다.  -> false 반환 후 반복 종료