99클럽 코테 스터디 28일차 TIL Baseball Game

방지환·2024년 6월 25일

코테 스터디

목록 보기
35/37

Baseball Game

  • 문제 풀이

    1. 주어진 배열에서 숫자가 나오면 값을 넣어주고 +,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 문제를 통해 익숙해져야겠다.
    • 다음 배울것
      • 스프링공부

0개의 댓글