야구 시합

2531 단어 theabbieleetcodedsa
당신은 이상한 규칙을 가진 야구 경기의 점수를 기록하고 있습니다. 이 게임은 여러 라운드로 구성되어 있으며 과거 라운드의 점수가 다음 라운드의 점수에 영향을 미칠 수 있습니다.

게임을 시작할 때 빈 레코드로 시작합니다. 문자열 목록ops이 제공됩니다. 여기서 ops[i]는 레코드에 적용해야 하는 ith 작업이며 다음 중 하나입니다.
  • 정수x - x의 새 점수를 기록합니다.
  • "+" - 이전 두 점수의 합인 새 점수를 기록합니다. 항상 두 개의 이전 점수가 있음을 보장합니다.
  • "D" - 이전 점수의 두 배인 새로운 점수를 기록합니다. 항상 이전 점수가 있음을 보장합니다.
  • "C" - 이전 점수를 무효화하여 레코드에서 제거합니다. 항상 이전 점수가 있음을 보장합니다.

  • 레코드의 모든 점수 합계를 반환합니다. 답이 32비트 정수에 맞도록 테스트 케이스가 생성됩니다.

    예 1:

    입력: ops = ["5","2","C","D","+"]
    출력: 30
    설명:
    "5"- 레코드에 5를 추가합니다. 레코드는 이제 [5]입니다.
    "2"- 레코드에 2를 추가합니다. 레코드는 이제 [5, 2]입니다.
    "C"- 이전 점수를 무효화하고 제거합니다. 기록은 이제 [5]입니다.
    "D"- 레코드에 2 * 5 = 10을 추가하면 레코드는 이제 [5, 10]이 됩니다.
    "+"- 레코드에 5 + 10 = 15를 더하면 레코드는 이제 [5, 10, 15]가 됩니다.
    합계는 5 + 10 + 15 = 30입니다.

    예 2:

    입력: ops = ["5","-2","4","C","D","9","+","+"]
    출력: 27
    설명:
    "5"- 레코드에 5를 추가합니다. 레코드는 이제 [5]입니다.
    "-2"- 레코드에 -2를 추가합니다. 레코드는 이제 [5, -2]입니다.
    "4"- 레코드에 4를 추가합니다. 레코드는 이제 [5, -2, 4]입니다.
    "C"- 이전 점수를 무효화하고 제거합니다. 레코드는 이제 [5, -2]입니다.
    "D"- 레코드에 2 * -2 = -4를 추가합니다. 레코드는 이제 [5, -2, -4]입니다.
    "9"- 레코드에 9를 추가합니다. 레코드는 이제 [5, -2, -4, 9]입니다.
    "+"- 레코드에 -4 + 9 = 5를 추가합니다. 레코드는 이제 [5, -2, -4, 9, 5]입니다.
    "+"- 레코드에 9 + 5 = 14를 더하면 레코드는 이제 [5, -2, -4, 9, 5, 14]가 됩니다.
    합계는 5 + -2 + -4 + 9 + 5 + 14 = 27입니다.

    예 3:

    입력: ops = ["1","C"]
    출력: 0
    설명:
    "1"- 레코드에 1을 추가합니다. 레코드는 이제 [1]입니다.
    "C"- 이전 점수를 무효화하고 제거합니다. 기록은 이제 []입니다.
    레코드가 비어 있으므로 합계는 0입니다.

    제약:
  • 1 <= ops.length <= 1000
  • ops[i]"C" , "D" , "+" 또는 [-3 * 104, 3 * 104] 범위의 정수를 나타내는 문자열입니다.
  • 작업"+"의 경우 기록에 항상 최소 2개의 이전 점수가 있습니다.
  • "C""D" 작업의 경우 레코드에 항상 최소 하나의 이전 점수가 있습니다.

  • 해결책:

    class Solution:
        def calPoints(self, ops: List[str]) -> int:
            score = [0]
            for op in ops:
                if op == "+":
                    score.append(score[-1] + score[-2])
                elif op == "C":
                    score.pop()
                elif op == "D":
                    score.append(score[-1] << 1)
                else:
                    score.append(int(op))
            return sum(score)
    

    좋은 웹페이지 즐겨찾기