프로그래밍공부/알고리즘

카카오톡 코딩테스트 - 다트게임

중랑구보안관 2020. 8. 4. 08:56

2018년 카카오톡 코딩테스트 문제를 풀어봤다.

https://programmers.co.kr/learn/courses/30/lessons/17682

 

코딩테스트 연습 - [1차] 다트 게임

 

programmers.co.kr

 

문자열을 잘 풀면 되는 문제였다.

import java.util.Stack;

class Solution {
    public int solution(String dartResult) {
        int answer = 0;
        String[] strs=dartResult.split("");
        int beforeTemp=0;
        int temp=0;
        Stack<Integer> stack=new Stack<Integer>();
        boolean beforeNumber = false;
        for(String str:strs){
            if(str.equals("*")){
                if(stack.size()>=2){
                    int number1=stack.pop();
                    int number2=stack.pop();
                    number1*=2;
                    number2*=2;
                    stack.push(number2);
                    stack.push(number1);
                    beforeNumber=false;
                }else{
                    int number=stack.pop();
                    number*=2;
                    stack.push(number);
                }
            }else if(str.equals("#")){
                int number = stack.pop();
                number*=-1;
                stack.push(number);
                beforeNumber=false;
            }else if(str.equals("S")){
                beforeNumber=false;
                continue;
            }else if(str.equals("D")){
                int number = stack.pop();
                number*=number;
                stack.push(number);
                beforeNumber=false;
            }else if(str.equals("T")){
                int number = stack.pop();
                number=number*number*number;
                stack.push(number);
                beforeNumber=false;
            }else{
                if(beforeNumber){
                    String strTemp=String.valueOf(stack.pop());
                    stack.push(Integer.parseInt(strTemp+str));
                    beforeNumber=false;
                }else{
                    stack.push(Integer.parseInt(str));
                    beforeNumber=true;
                }
                
            } 
        }
        while(!stack.empty()){
            answer+=stack.pop();
        }
        
        return answer;
    }
}

-끝-