[Java] 올바른 괄호

allzeroyou·2025년 1월 23일
0

Java-Algorithm

목록 보기
16/26
post-thumbnail

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

문제 설명

괄호가 바르게 짝지어짐: '('문자로 열렸으면 반드시 ')' 문자로 닫혀야 함.
예를 들어

  • ()() or (())(): 올바른 괄호
  • )()( or (()(: 올바르지 않은 괄호

), (로만 이뤄진 문자열 s가 주어질때, s가 올바른 괄호면 true를 return, 아니라면 false를 반환.

풀이

전형적인 스택 문제.

  1. 문자열을 하나씩 스택에 삽입한다.
  2. 문자 하나씩 추출한다.
    • 현재 문자가 '('이면 stack.push();
    • 현재 문자가 ')'이면 stack.pop();
      • 만약, pop하려고 했으나 stack이 비었다면 닫는 괄호가 더 많은 것이므로, false 반환.
  3. 스택을 다 비웠을때, 비어야 올바른 괄호 쌍임.

정답코드

import java.util.*;

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        
        Stack<Character> stack = new Stack<>();
        
        for(char c: s.toCharArray()){
            if(c=='('){
                stack.push(c);
            }
            else if(stack.isEmpty()){
                    return false;
            }
            else{
                stack.pop();    
            }
        }
        if(stack.isEmpty()){
            return true;
        }else{
            return false;
        }
    }
}
profile
모든 건 zero 부터, 차근차근 헛둘헛둘

0개의 댓글