[LeetCode] Remove Outermost Parentheses

아르당·2026년 3월 25일

LeetCode

목록 보기
221/303
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

유효한 괄호 문자열은 빈 문자열(""), "(" + A + ")", A + B이다. 여기서 A와 B는 유효한 괄호 문자열이고, +는 문자열 연결을 나타낸다.

  • 예를 들어, "", "()", "(())()", "(()(()))"는 모두 유효한 괄호 문자열이다.

유효한 괄호 문자열 s는 비어 있지 않고, 비어 있지 않은 유효한 괄호 문자열 A와 B를 사용하여 s = A + B로 분할할 수 있는 방법이 존재하지 않는 경우 기본 문자열이다.
유효한 괄호 문자열 s가 주어졌을 때, s의 기본 분해를 고려해라. s = P1 + P2 + ... + Pk에서 P1과 P2는 각각 유효한 기본 괄호 문자열이다.

s의 기본 분해에서 각 기본 문자열의 가장 바깥쪽 괄호를 제거한 후의 s를 반환해라.

Example

#1
Input: s = "(()())(())"
Output: "()()()"

#2
Input: s = "(()())(())(()(()))"
Output: "()()()()(())"

#3
Input: s = "()()"
Output: ""

Constraints

  • 1 <= s.length <= 10^5
  • s[i]는 '(', ')'중 하나이다.
  • s는 유효한 괄호 문자열이다.

Solved

class Solution {
    public String removeOuterParentheses(String s) {
        int count = 0;
        StringBuilder sb = new StringBuilder();

        for(char c : s.toCharArray()){
            if (c == '('){
                if(count > 0){
                    sb.append(c);
                }
                
                count++;
            }
            else{
                count--;

                if(count > 0){
                    sb.append(c);
                }
            }
        }
        return sb.toString();
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글