csmoon1010의 SW 블로그

[200803] 올바른 괄호 - 연습문제(level2) 본문

Coding Test/프로그래머스

[200803] 올바른 괄호 - 연습문제(level2)

csmoon1010 2020. 8. 3. 20:10

1. 문제 이해

- 문자열 s : '(' 또는 ')'로 이루어진 문자열

- 결과 answer : s가 올바른 괄호(짝지어서 닫히는 경우)에는 true, 그렇지 않으면 false

 

2. 전략

- Stack 컬렉션 이용

(1) '(' 인 경우 : stack에 push
(2) ')' 인 경우
    - stack이 empty가 아닌 경우 : stack에서 pop → 짝이 될 수 있는 '('가 앞에 나온 상태
    - stack이 empty인 경우 : false
(3) 문자열 s를 모두 본 후 : stack이 empty가 아니면 false

 

3. 참고사항

(1) 다른 풀이 1 : count 변수를 이용하는 경우

    - '(' : count++

    - ')' : count --

    (결론) count가 0인 경우만 answer = true

 

4. 코드

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('(');
            else{
                if(!stack.empty())  stack.pop();
                else{
                    answer = false;
                    break;
                }
            }
        }
        if(!stack.empty()) answer = false;

        return answer;
    }
}
Comments