Menu
CoddyTech

Baseball Game

쉬움스택python iconjava iconcpp iconc iconjs icon+10

특이한 게임의 점수를 기록합니다. 목록 operations는 왼쪽에서 오른쪽으로 읽으며, 각 항목은 점수 기록을 변경합니다. "7" 또는 "-2"와 같은 정수는 해당 점수를 기록에 추가합니다. "+"는 가장 최근 점수 두 개의 합과 같은 점수를 추가하고, "D"는 가장 최근 점수의 두 배와 같은 점수를 추가하며, "C"는 기록에서 가장 최근 점수를 영구적으로 제거합니다.

마지막 연산을 수행한 후 기록에 남아 있는 점수의 합을 반환하는 calPoints라는 함수를 작성하세요. 기록이 비어 있으면 합은 0입니다.

함수

calPoints(operations: string-array) → integer
operationsstring-array
순서대로 연산: 텍스트로 된 정수 또는 "+", "D", "C"
반환값integer
마지막에 기록에 남아 있는 점수의 합

제약 조건

  • 1 ≤ operations.length ≤ 5000
  • 각 항목은 "+", "D", "C" 또는 -3 × 104 ≤ value ≤ 3 × 104 범위의 십진수 정수입니다.
  • 모든 연산은 유효합니다. "+"는 기록에 점수가 두 개 이상 있을 때만 나오고, "D"와 "C"는 기록에 점수가 하나 이상 있을 때만 나옵니다.
  • 기록의 모든 점수와 최종 합계는 32비트 부호 있는 정수 범위에 들어갑니다.

예제

입력
operations = ["4", "-2", "D", "+", "C", "7"]
출력
5
설명
기록은 [4, -2]로 늘어나고, "D"는 -4를 추가하며, "+"는 -2 + -4 = -6을 추가하고, "C"는 해당 -6을 제거하며, 마지막에 7이 들어갑니다. 기록 [4, -2, -4, 7]의 합은 5입니다.

lock icon제출 시 숨은 테스트 +13개

challenge icon

후속 질문

맨 끝의 기록을 더하지 않고 합계를 반환하여, 취소 작업을 포함한 모든 연산이 O(1) 시간에 완료되도록 할 수 있나요?

코드 초기화
def calPoints(operations):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

operations = ["4", "-2", "D", "+", "C", "7"]

기대값

5