코딩테스트 풀이/JAVA
[LeetCode/Easy] 682. Baseball Game
무지맘
2023. 3. 16. 13:47
1. Input
1) String[] operations
2. Output
1) 다음 규칙에 따라 계산한 결과를 int로 반환
// operations[i]가
- 정수: 해당 점수를 기록한다.
- +: 이전의 두 점수를 더한 값을 기록한다.
- C: 마지막 점수 기록을 없앤다.
- D: 마지막 점수의 2배를 기록한다.
3. Constraint
1) 1 <= operations.length <= 1000
2) operations[i]는 "C", "D", "+"와 [- 3*10^4, 3* 10^4]범위의 정수를 나타내는 문자열로 이루어져 있다.
3) “+" 앞에는 적어도 점수가 2개 있다.
4) "C"와 "D" 앞에는 적어도 점수가 1개 있다.
4. Example
Input: operations = ["5","2","C","D","+"] -> Output: 30
설명:
- "5": 5점 추가. 점수판=[5]
- "2": 2점 추가. 점수판=[5, 2]
- "C": 마지막 점수 제거. 점수판=[5]
- "D": 마지막 점수 2배. 점수판=[5, 10]
- "+": 이전 두 점수 더한 값을 기록. 점수판=[5, 10, 15]
- 따라서 5 + 10 + 15 = 30을 반환한다.
5. Code
1) 첫 코드(2023/03/16)
ArrayList<Integer> list = new ArrayList<Integer>();
for(String s : operations){
switch(s){
case "C": list.remove(list.size()-1); break;
case "D": list.add(list.get(list.size()-1)*2); break;
case "+": list.add(list.get(list.size()-1)+list.get(list.size()-2)); break;
default: list.add(Integer.valueOf(s));
}
}
int answer = 0;
for(int i=0 ; i<list.size() ; i++)
answer += list.get(i);
return answer;