Leetcode Java Baseball Game
업데이트:
문제
코드
class Solution {
public int calPoints(String[] operations) {
Stack<Integer> stack = new Stack<>();
int sum = 0;
for (String operation : operations) {
int num;
switch (operation) {
case "+":
num = stack.pop();
int add = num + stack.peek();
sum += add;
stack.push(num);
stack.push(add);
break;
case "D":
num = stack.peek() * 2;
sum += num;
stack.push(num);
break;
case "C":
sum -= stack.pop();
break;
default:
num = Integer.parseInt(operation);
sum += num;
stack.push(num);
}
}
return sum;
}
}
결과
설명
- operations의 모든 값들을 순차적으로 아래의 문자에 해당하는 규칙으로 점수를 계산하여 반환하는 문제이다.
- 정수인 경우, 해당 값으로 점수를 기록한다.
- ”+” 문자인 경우, 이전 두 정수인 점수들의 합으로 점수를 기록한다.
- “D” 문자인 경우, 이전 정수인 점수의 두 배로 점수를 기록한다.
- “C” 문자인 경우, 이전 정수인 점수를 무효 처리하여 제거한다.
- 문제 풀이에 필요한 변수를 정의한다.
- stack은 기록된 점수를 순차적으로 넣고 꺼내 계산하기 위한 변수로, Stack으로 초기화한다.
- sum은 계산된 최종 점수를 저장할 변수로, 0으로 초기화한다.
- oprations의 모든 문자열을 operation로 아래를 반복한다.
- num은 stack에서 꺼내 임시 보관할 변수이다.
- operation이 “+” 문자인 경우 아래를 수행한다.
- num에 stack에서 값을 꺼내 넣어주고, add에 num과 stack의 다음 값을 더해준다.
- sum에 add를 더해 두 점수의 합을 더해준다.
- stack에 num과 add를 순서대로 다시 넣어 다음 계산에 포함되도록 한다.
- operation이 “D” 문자인 경우 아래를 수행한다.
- num에 stack의 이전 값의 두 배를 넣어준다.
- sum에 num을 더해주고, stack에 현재 점수인 num을 넣어준다.
- operation이 “C” 문자인 경우 아래를 수행한다.
- sum에 stack의 값을 꺼내 빼준다.
- 위의 문자들이 아닌 경우 숫자이므로 아래를 수행한다.
- num에 operation을 숫자로 변환해 넣어준다.
- sum에 num을 더하고, stack에 num을 넣어준다.
- 반복이 완료되면 계산된 총점인 sum을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기