[Algorithm/java] Baseball Game

Jay·2020년 12월 20일
0

Algorithm

목록 보기
9/44
post-thumbnail

Problem

Input ["5","-2","4","C","D","9","+","+"]
Output 27

problem solution

  1. The sum is 5
  2. -2 points. The sum is 3.
  3. 4 points. The sum is 7.
  4. C -> 3번 데이터 삭제. The sum is 3.
  5. D -> 2번의 -2값 더블 -4를 얻는다. -4 + 3 = -1. The sum is -1.
  6. 9 points. The sum is 8.
  7. -4 + 9 = 5 points. The sum is 13.
  8. 9 + 5 = 14 points. The sum is 27.

접근하기

  • C,D,+,숫자가 의미하는 것들을 파악하여 케이스에 따라 실행
  • 순서가 중요함으로 stack을 이용.

Code

package stack_queue;

import java.util.*;

public class BaseballGame {
 
    public static void main(String[] args){
        String[]  strs = {"5","-2","4","C","D","9","+","+"};
        System.out.println("결과 값 : "+points(strs));        
    }
    
    public static int points(String[] strs){
        //1 데이터를 담을 수 있는 곳
        Stack<Integer> stack = new Stack<>();
        
        //2 데이터 뽑기
        for(String op : strs){
            switch(op) {
                case "C" : //맨 뒤 제거
                    stack.pop();
                    break;
                    
                case "D" : //앞의 원소를 2배 후 삽입
                    stack.push(stack.peek()*2);
                    break;
                    
                case "+" :
                    int x = stack.pop();
                    int y = stack.pop();
                    stack.push(y);
                    stack.push(x);
                    stack.push(x+y);
                    break;
                    
                default : 
                    stack.push(Integer.valueOf(op));                    
            }
        }
        
        int sum=0;
        while(!stack.isEmpty()){
            sum+= stack.pop();
        }
        return sum;        
    }
}
profile
developer

0개의 댓글