슬슬의 공부

[프로그래머스] 올바른 괄호

seulseul 2023. 1. 24. 21:25
제목 난이도 완료한 사람 정답률
올바른 괄호스택/큐 Lv. 2 24,023명 75%

 

문제 설명

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다.

예를 들어

  • "()()" 또는 "(())()" 는 올바른 괄호입니다.
  • ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.

'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때,

문자열 s가 올바른 괄호이면 true를 return 하고,

올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 문자열 s의 길이 : 100,000 이하의 자연수
  • 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.

입출력 예

s answer
"()()" true
"(())()" true
")()(" false
"(()(" false
 

입출력 예 설명

입출력 예 #1,2,3,4

문제의 예시와 같습니다.

 

Solution.java

import java.util.*;

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        Stack<Character> stack = new Stack<Character>();

        for(int i=0; i < s.length(); i++){
            if(s.charAt(i) == '(') {
                // 현재 (가 들어갈 자리면 스택에 넣는다.
                stack.push('(');
             } else {
             
                if(stack.isEmpty()) {
                
                //  ')' 가 들어갈 자리인데 스택이 비어있을경우 -> false
                    return false;
                } else {
                
                // ')' 가 들어갈 상태에서 스택에 괄호 '(' 가 있는경우 -> pop
                    stack.pop();
                }
            }
        }
        
        answer = (stack.isEmpty()) ? true : false;
        return answer;
    }
}

'슬슬의 공부' 카테고리의 다른 글

[Java] Error vs Exception  (0) 2023.03.09
자료구조  (0) 2023.01.24
[프로그래머스] 카펫  (0) 2023.01.24
[프로그래머스] 분수의 덧셈  (0) 2023.01.24
[MSA] EDA (Event Driven Architecture)  (0) 2023.01.17