코린이의 소소한 공부노트

[LeetCode/Easy] 682. Baseball Game 본문

코딩테스트 풀이/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;