본문 바로가기

Development/CodingTest

[Stack] 프로그래머스 level 2 올바른 괄호 java 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=java

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

초기 문제 접근

  • int 변수로 flag를 하나 만들고, '('는 ++, ')'는 --로 
  • 최종 flag가 0이 아니면 false, 0이면 true로 생각했으나,
  • ")()(" 같은 문자열을 거르지 못했음
  • 나중에야 알았던게 flag가 < 0 이 되면 바로 false를 하면 됐구나..

문제 접근

  • '('를 만나면 스택에 넣고
  • ')'를 만나면 pop
  • 근데 pop할게 없다면(스택이 비어있다면) false
  • 마지막으로 스택에 남아있는 요소가 있는지를 판별하여 리턴

코드

import java.util.*;

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