[Java][프로그래머스] Lv.2 - 올바른 괄호

배수연·2024년 8월 1일

algorithm

목록 보기
42/45

🔗 프로그래머스 Lv.2 - 올바른 괄호

문제

알고리즘 분류

  • 스택/큐

풀이

1. 입력 요소에 따라 push/pop

  • 스택을 생성하여 입력 요소가 '('이면 push('(')
  • 입력 요소가 ')'이면
    • 바로 이전에 저장된 요소가 '('라면 pop
    • 그 외엔 push(')')
        Stack<Character> stack = new Stack<>(); 
        for(int i = 0; i<s.length(); i++){
            if(s.charAt(i) == '('){
                stack.push('(');
            } else if (s.charAt(i) == ')') {
                if(!stack.isEmpty() && stack.peek() == '('){
                    stack.pop();
                } else stack.push(')');
            }
        }

2. 스택이 비었는지 확인하여 return

  • 1번 로직에 따라 반복이 끝난 후, stack에 괄호가 남아있다면 올바르지 않은 괄호이고 stack이 비어있다면 올바른 괄호이다.
        if (stack.isEmpty())
            return true;
        else return false;

전체 코드

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('(');
            } else if (s.charAt(i) == ')') {
                if(!stack.isEmpty() && stack.peek() == '('){
                    stack.pop();
                } else stack.push(')');
            }
        }
        if (stack.isEmpty())
            return true;
        else return false;
    }
}

0개의 댓글