#문제 설명
Leetcode 856번 문제는 괄호로 구성된 문자열이 구성된다. 이 괄호들 패턴에는 점수가 있다. () 는 1 점, ()() 는 1 + 1 = 2, (()) = 2 * 1 = 2 이다. 예를 들어 (()()) 라는 문자열이 주어지면 () + () = 2 이고 (2) 는 2 * 2 이기때문에 4가 정답이다.
#문제 풀이
class Solution {
public int scoreOfParentheses(String s) {
Stack<Integer> st = new Stack<>();
int score = 0;
for(int i = 0; i < s.length(); i++){
char ch = s.charAt(i);
if(ch == '('){
st.push(score);
score = 0;
}
else {
score = st.pop() + Math.max(2 * score, 1);
}
}
return score;
}
}
이 문제는 스택을 사용하면 간단히 풀수있다.
'LeetCode > String' 카테고리의 다른 글
[Easy] 20. Valid Parentheses (0) | 2022.11.14 |
---|---|
[Medium] 49. Group Anagrams (Amazon) (1) | 2022.09.20 |
[Medium] 1663. Smallest String With A Given Numeric Value (Microsoft) (0) | 2022.09.20 |
[Medium] 5. Longest Palindromic Substring (구글 코딩 테스트 기출 문제) (0) | 2022.09.11 |
[Easy] 344. Reverse String (0) | 2022.08.25 |