야구 시합
게임을 시작할 때 빈 레코드로 시작합니다. 문자열 목록
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)
Reference
이 문제에 관하여(야구 시합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/baseball-game-3caf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)