728x90
반응형
https://github.com/ROUTINE-STUDY/Algorithm
알고리즘 스터디를 진행하고 있습니다.
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
참여 문의는 댓글 혹은 GitHub 주소를 참고해주세요.
문제 출처 : https://leetcode.com/problems/maximum-nesting-depth-of-the-parentheses/
문제 설명
문자열(수식)이 주어지는데 괄호가 최대로 중첩된 개수를 반환하세요.
풀이 방법
주어진 문자열에서 중요한 문자는 ' ( ' 과 ' ) ' 뿐이다. 이 외의 문자는 없다고 생각한다.
괄호가 최대로 중첩이 되려면, 우선 ' ( ' 이 연속적으로 나와야 한다.
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
반응형
'알고리즘' 카테고리의 다른 글
[LeetCode/JAVA] 589. N-ary Tree Preorder Traversal (0) | 2021.08.07 |
---|---|
[LeetCode/JAVA] 9. Palindrome Number (0) | 2021.08.05 |
[프로그래머스/JAVA] 신규 아이디 추천 (0) | 2021.07.29 |
[LeetCode/JAVA] 1877. Minimize Maximum Pair Sum in Array (0) | 2021.07.28 |
[프로그래머스/JAVA] 폰켓몬 (0) | 2021.07.27 |
댓글