프로그래밍공부/알고리즘
카카오톡 코딩테스트 - 다트게임
중랑구보안관
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;
}
}
-끝-