Baseball Game

-
문제 풀이
- 주어진 배열에서 숫자가 나오면 값을 넣어주고 +,D,C에 각각의 문자가 나올때는 해당 조건에 맞게 계산한 후 최종 값을 더하여 return해주는 문제이다.
-
풀이 소스
class Solution {
public int calPoints(String[] operations) {
Stack<Integer> stack = new Stack();
int sum = 0;
for(int i=0; i<operations.length; i++){
if(operations[i].equals("C")){
stack.pop();
}else if(operations[i].equals("D")){
stack.push(stack.peek()*2);
}else if(operations[i].equals("+")){
int a = stack.pop();
int b = stack.pop();
stack.push(b);
stack.push(a);
stack.push(a+b);
}else{
stack.push(Integer.parseInt(operations[i]));
}
}
while(!stack.isEmpty()){
sum += stack.pop();
}
return sum;
}
}
오늘의 회고
문제 시도 및 해결
- 이번 문제는 Stack을 통해 해결하고자 했다.
- 우선 +,D,C 각 경우에 맞게 조건을 건다
- +는 Stack에 넣어진 두 값을 더한 후 다시 Stack에 LIFO임으로 a와 b의 순서를 반대로 값을 넣어준후 새롭게 더한값을 새롭게 push해준다.
- D는 마지막에 넣어진 값에 2배를 곱하여 새롭게 push해준다. 이때는 값을 꺼내면 안되기때문에 peek()를 사용
- C는 해당 값을 제거해줘야하기떄문에 pop()을 통해 값을 꺼낸다.
- 나머지 숫자의 경우에 push하여 Stack에 값을 넣어준다.
- 마지막으로 stack이 비어질때까지 값을 꺼내면서 sum에 더하여 return해준다.
학습 내용 및 회고
- Stack의 pop(), push(), peek()에 대한 메소드를 사용할 수 있어서 좋았다.
- 다양한 Stack 문제를 통해 익숙해져야겠다.
다음 배울것