코딩/코테준비(JAVA)

[프로그래머스 / JAVA] 올바른 괄호 (정답 코드)

미스터박 2025. 1. 31. 22:19

자바 공부와 코딩테스트 준비를 병행할 겸 자바로 코테 준비를 며칠 전 시작했다.

막히거나 틀린 부분이 있더라도, 그냥 그대로 내가 스스로 작성한 부분들을 기록해 두려고 한다. 
그냥 미래의 복기용으로 나를 위해 적어둔 기록이다.
(이 사람은 어떻게 실패하거나 성공했는지 살펴보는 용도로도 적합할 것 같다.)
 
이 문제는 "Stack 자료구조" 하면 맨 처음 마주하게 되는 대표적인 문제다.
괄호문자열을 왼쪽부터 순회한다고 할 때, 닫힌 괄호(')')가 나오면 그에 맞는 짝은, 이전까지 순회했던 열린 괄호('(')중 제일 최근에 등장한 열린 괄호이다.
나는 열린 괄호들을 스택에 쌓아두고, 닫힌 괄호가 나타날 때마다 스택에서 뽑아냈다. 
정상적으로 짝지어진 문자열이라면, 전부 순회했을때 스택이 텅 비어있어야 한다.
만약 중간에 비어있는 스택에서 무언가 뽑아내려는 시도가 일어나거나, 다 끝났는데도 스택이 차있다면 정상적인 문자열이 아니라는 소리이다.

import java.util.Stack;

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c == '(') {
                stack.push(c);
            } else { // c == ')'
                if (stack.isEmpty()) {
                    return false;
                } else { // not empty
                    stack.pop();
                }
            }
        }
        if (!stack.isEmpty()) {
            return false;
        }

        return true;
    }
}

 
하루에 한문제 이상 꾸준히 풀자.

실수는 많이 할수록, 더 많이 배울 수 있다.
 
https://school.programmers.co.kr/learn/courses/30/lessons/12909

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr