올바른 괄호

공부한것 다 기록해·2023년 7월 17일
0

짝짓기 문제 유형은 Stack 사용을 고려해 보아야 한다

일단 Stack이 비어있는 경우 문자를 넣어준다.(시작)
그 다음 문자부터 문자가 (인지 )인지에 따라 다르게 경우를 생각해준다.
(인경우 고대로 Stack에 넣어준다.
)인경우 만약 Stack에 (가 존재한다면 Stack에서 (를 빼준다.
그렇지 않은 경우 바로 false를 return해준다.

최종적으로 Stack을 한번 확인해준다.
Stack의 크기가 0인경우 짝이 다 존재하는 경우이므로 완벽한 짝짓기 성공
그렇지 않은 경우 완벽한 짝짓기는 실패한 경우

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++) {

            Character ch = s.charAt(i);

            if(ch=='('){ // (인경우
                stack.push(ch);
            }else if(ch == ')'){// )인경우
                if(stack.isEmpty()){ // 비어있는 경우
                    answer = false;
                    break;
                }else{
                    stack.pop();
                }
            }
        }

        if(stack.size() > 0){
            answer = false;
        }// 비어있지 않은 경우

        return answer; // 비어있는 경우
    }
}

3개의 댓글

comment-user-thumbnail
2023년 7월 18일

너무 좋은 글이네요. 공유해주셔서 감사합니다.

답글 달기
comment-user-thumbnail
2023년 7월 18일

글 잘 봤습니다, 감사합니다.

답글 달기
comment-user-thumbnail
2023년 7월 18일

유익한 글 잘 봤습니다, 감사합니다.

답글 달기