본문 바로가기
Algorithm/프로그래머스

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

by 세류오 2023. 8. 14.

 

https://school.programmers.co.kr/learn/courses/30/lessons/12909

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제이해

- '('과 ')'으로 구성된 문자열이 주어짐

- '()'이 한 쌍으로 존재해야 올바른 괄호

-> ex) '()', '(())()' 가능

- 문자열이 올바르면 true, 틀리면 false를 반환

 

해결방법

- Stack함수 사용

- '('이 들어온다면 push

- ')'이 들어온다면 

  - isEmpty를 이용 stack이 비어있는지 검사

  - if 비어있다면 return false

  - 아니라면 pop을 실행

stack을 이용 '('에는 push, ')'에는 pop을 사용, 올바른 괄호상태 = 비어있는 상태

isEmpty를 사용해 return값을 반환

 

 

import java.util.*;
class Solution {
    boolean solution(String s) {
        boolean answer = true;

        Stack<Character> stack = new Stack<>();//char형 스택
		//문자열 길이만큼 반복
        for(int i = 0; i < s.length(); i++){
        	//'('일 때
            if(s.charAt(i) == '('){
                stack.push('('); // push
            //')'일 때
            } else if (s.charAt(i) == ')'){
                //먼저 들어온 '('가 존재하는 지 확인
                if(stack.isEmpty()){
                    return false;
                }
                //'('가 있다면 pop
                stack.pop();
            }
        }
        //stack이 비어있다면 올바른 괄호
        return stack.isEmpty();
    }
}