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

Paek·2023년 8월 30일
0

코테공부 자바

목록 보기
14/25

출처

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

문제


괄호가 올바르게 짝지어져있는지 판별하는 문제입니다. 스택을 사용해서 해결 할 수 있습니다.

풀이

문제를 풀때 스택을 사용하는게 정석이라고 생각하였습니다. 그래서 맨 윗줄에 Stack을 선언해두었습니다.

  • 문자열 s에 대해 for문을 돌면서, '(' 부호가 나오면 스택에 push를 합니다.

  • ')' 부호가 나오면 스택이 비어있는지, 스택의 맨 위 원소가 '(' 원소가 맞는지를 검증합니다.

    • 이때 통과하지 못하면 정상적인 부호가 아니므로 false를 바로 리턴합니다.
    • 정상적으로 '(' 부호가 있다면, 스택에서 pop()을 통해 '('를 제거하고 다음 단계로 넘어갑니다.
  • 최종적으로 반복문이 종료되었을 때, 정상적으로 '('가 모두 제거되어 스택에 원소가 남아있는지를 판별하게 됩니다. 이때, 스택에 원소가 남았다면 false를, 모두 비어있다면 true를 리턴하게 됩니다.

코드

import java.util.*;
class Solution {
    boolean solution(String s) {
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '(') {
                stack.push(s.charAt(i));
            }
            else {
                if (!stack.empty() && stack.peek() == '(') {
                    stack.pop();
                }
                else {
                    return false;
                }
            }
        }
        return stack.empty() ? true : false;
    }
    
}
profile
티스토리로 이전했습니다. https://100cblog.tistory.com/

0개의 댓글