카테고리 없음

[프로그래머스 / 자바 / Lv.2] 12909 올바른 괄호

HHRR 2024. 7. 10. 22:47
문제

 

자바 개념 정리
  • String 문자열에서 인덱스 i값 뽑아오기 : `charAt(i)`
  • 스택 생성
Stack<Integer> stack = new Stack<>(); // push, pop, peek, empty, search 지원

 

풀이

 

() 쌍이 올바르기 위해서는 ( 이후에 )가 무조건 와야한다.

따라서 스택을 생성하여 ( 인 경우에 push를 하고 )인 경우에 pop을 했을 때 최종적으로 올바른 괄호라면 스택이 비어있어야한다.

 

1. Character 타입으로 스택을 생성한다. (charAt()을 사용하기 위해)

2. 입력값을 charAt으로 순서대로 순회하고, ( 인 경우 스택에 push를 해준다.

3. 만약 ) 인 경우에는 스택을 pop 해주는데, 이 때 스택이 비어있는 경우에 pop을 해줄 수 없으며 올바르지 않은 괄호기때문에 false를 반환해준다.

4. stack.isEmpty()를 반환하는데, isEmpty()는 스택이 비어있을 경우 true, 아닐 경우 false를 반환한다.

 

class Solution {
        boolean solution(String s) {
            Stack<Character> stack = new Stack<>(); // Character로 스택 생성

            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; // 스택이 비어있을 경우 pop 하지 말고 return false
                    stack.pop();
                }
            }

            return stack.isEmpty();
        }
    }