개발 일지
682. Baseball Game (야구 게임) 본문
야구 경기의 점수를 이상한 규칙으로 유지하고 있습니다. 경기가 시작되면 빈 기록으로 시작합니다.
문자열 operations 목록이 주어지며, operations[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 <= operations.length <= 1000
- operations[i]는 "C", "D", "+" 또는 [-3 * 10^4, 3 * 10^4] 범위의 정수를 나타내는 문자열입니다.
- "+" 연산의 경우, 항상 레코드에 이전 점수가 두 개 이상 표시됩니다.
- 연산 "C"와 "D"의 경우, 항상 기록에 이전 점수가 하나 이상 표시됩니다.
정답:
public class Solution {
public int CalPoints(string[] operations) {
int result = 0;
List<int> resultList = new List<int>();
for (int i = 0; i < operations.Length; i++)
{
if (operations[i] == "+")
{
resultList.Add(resultList[resultList.Count - 1] + resultList[resultList.Count - 2]);
}
else if (operations[i] == "D")
{
resultList.Add(resultList[resultList.Count - 1] * 2);
}
else if (operations[i] == "C")
{
resultList.RemoveAt(resultList.Count - 1);
}
else
{
resultList.Add(Int32.Parse(operations[i]));
}
}
foreach (var i in resultList)
{
result += i;
}
return result;
}
}
해설: operations 0부터 순서대로 계산을 합니다.
"+", "D", "C" 연산을 할 때에는 그 이전 배열을 이용해야하므로 resultList의 길이를 이용하여 계산합니다.
계산이 완료되면 result에 모두 더하고 return합니다.
'코딩 테스트 > LeetCode' 카테고리의 다른 글
1557. Minimum Number of Vertices to Reach All Nodes ( 모든 노드에 도달하기 위한 최소 정점 수) (0) | 2024.11.04 |
---|---|
229. Majority Element II (다수 원소 II) (2) | 2024.11.01 |
709. To Lower Case (소문자로) (0) | 2024.10.31 |
705. Design HashSet (HashSet 디자인) (0) | 2024.10.31 |
9. Palindrome Number (대칭수) (0) | 2024.10.31 |