문제
- 문제 링크
- VPS(valid parentheses string)인 문자열 s가 주어질 때, 가장 깊은 depth를 구해야 한다.
- VPS는 아래 조건을 만족한다.
- 빈 문자열(
"")일 수 있다.
"(", ")"이 아닌 단일 문자열일 수 있다.
- VPS인
A와 B가 있을 때, AB도 VPS이다.
A가 VPS일 때, (A)도 VPS이다.
- VPS의 depth는 아래를 참고할 수 있다.
()는 depth가 1이다.
()()는 최대 depth가 1이다.
()(())는 최대 depth가 2이다.
- 제약 조건
- 문자열 길이:
1 <= s.length <= 100
- 주어지는 문자열
s에는 0-9 숫자와 +, -, *, /, (, ) 가 포함될 수 있다.
- 주어지는 문자열
s는 VPS임이 보장된다.
풀이
풀기 전
- 문제 설명은 긴데, 결국 중첩된 괄호 안에서 가장 깊은 지점을 찾으면 된다.
- 이미 주어지는 문자열이 VPS임을 만족하기 때문에, 여는 괄호(
'(')를 만났을 땐 깊이가 깊어지고 닫는 괄호(')')를 만났을 땐 깊이가 얕아진다. 문자열을 순회하며 가장 깊은 지점을 찾으면 된다.
코드
class Solution {
public int maxDepth(String s) {
int ans = 0;
int nowDepth = 0;
char[] chars = s.toCharArray();
for (int i=0; i<chars.length; i++) {
if (chars[i] == '(') {
nowDepth++;
ans = Math.max(ans, nowDepth);
} else if (chars[i] == ')') {
nowDepth--;
}
}
return ans;
}
}
푼 후