본문 바로가기
알고리즘

[LeetCode/JAVA] 1614. Maximum Nesting Depth of the Parentheses

by 상후 2021. 8. 3.
728x90
반응형

https://github.com/ROUTINE-STUDY/Algorithm

알고리즘 스터디를 진행하고 있습니다.
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
참여 문의는 댓글 혹은 GitHub 주소를 참고해주세요.

문제 출처 : https://leetcode.com/problems/maximum-nesting-depth-of-the-parentheses/

출처 : LeetCode

문제 설명
문자열(수식)이 주어지는데 괄호가 최대로 중첩된 개수를 반환하세요.
풀이 방법
주어진 문자열에서 중요한 문자는 ' ( ' ' ) ' 뿐이다. 이 외의 문자는 없다고 생각한다.
괄호가 최대로 중첩이 되려면, 우선 ' ( ' 이 연속적으로 나와야 한다.
1. 문자열의 각각의 문자를 탐색하여 ' ( ' 가 나오면 count + 1을 해준다.
2. ' ( ' 이 나올 때마다 res와 count와 비교하여 최댓값을 res에 넣어준다.
3. ' ) ' 이 나온다면 괄호가 닫힌 것이므로 count - 1을 해준다.
내 코드(JAVA)

 

public int maxDepth(String s) {
    int count = 0;
    int res = 0;

    for(int i=0; i<s.length(); i++) {
        if(s.charAt(i) == '(') {
            if(res < ++count) res = count;
        } else if(s.charAt(i) == ')') {
            --count;
        }
    }

    return res;
}

 

위 코드를 다양하게 변경 및 리팩토링을 해볼 수 있다.

1. if문을 && 조건을 걸도록 변경

if(s.charAt(i) == '(' && res < ++count) {
    res = count;
}

2. 최댓값 비교 if 문을 Math.max() 메서드를 활용하여 변경

if(s.charAt(i) == '(') {
    ++count;
    res = Math.max(res, count);
}

3. Stack 클래스를 활용하여 구현

 

등등 사람들 마다 다양한 방법들이 존재했다.

성능은 크게 차이가 나지 않는다. 가독성을 고려해서 코드를 선택해보자.

 

 

728x90
반응형

댓글