작심삼일

[LeetCode] 856 | Score of Parentheses | Python 본문

스터디/코테

[LeetCode] 856 | Score of Parentheses | Python

yun_s 2022. 3. 17. 10:05
728x90
반응형

문제 링크: https://leetcode.com/problems/score-of-parentheses/


문제

Given a balanced parentheses string s, return the score of the string.

The score of a balanced parentheses string is based on the following rule:

  • "()" has score 1.
  • AB has score A + B, where A and B are balanced parentheses strings.
  • (A) has score 2 * A, where A is a balanced parentheses string.

조건

  • 2 <= s.length <= 50
  • s consists of only '(' and ')'.
  • s is a balanced parentheses string.

내 풀이

다음과 같이 문제가 주어졌다고 하자.

검은색 괄호는 깊이가 1, 파란색은 깊이가 2, 초록색은 3, 보라색은 4다.


'('과 ')'이 만나는 곳을 기준으로 점수를 매긴다.

점수는 $2^{Depth-1}$로 나타내어진다.

각 점수를 합산한 것을 리턴하면 된다.


코드

class Solution:
    def scoreOfParentheses(self, s: str) -> int:
        score = 0
        
        cur = 1
        for n in range(len(s)-1):
            if s[n] == '(':
                if s[n+1] == ')':
                    score += cur
                cur *= 2
            else:
                cur /= 2
        
        return int(score)
728x90
반응형
Comments