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

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

by 녹녹1 2023. 10. 9.

문제 설명

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

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

'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

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

입출력 예


import java.util.*;
class Solution {
    boolean solution(String s) {
        Stack<Character> stack = new Stack<>();
        for(int i = 0; i < s.length(); i++){
            if(s.charAt(i)=='('){
                stack.push('(');
            }else{
                if(stack.isEmpty()){
                    return false;
                }
                stack.pop();
            }
        }
        return stack.isEmpty();
    }
}

 

이번 문제를 풀면서 처음으로 stack을 사용해봤다.

 

이전에 List에 대해 배우면서 stack이라는 것이 있다는 것을 알고는 있었지만 알아볼 생각을 크게 하지 않았는데,

이번 문제의 경우 stack을 활용해서 풀어보고 싶어서 검색해서 알아본 후 풀어보았다.

 

stack에 대해 (GPT가) 정리한 내용을 함께 첨부해둔다.


스택 생성: 자바에서 스택을 구현하려면 주로 배열이나 연결 리스트를 사용합니다. 자바에서는 java.util.Stack
 클래스를 제공하지만, 일반적으로 java.util.LinkedList 클래스를 사용하여 스택을 구현하는 것이 더 일반적입니다.

댓글