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;
}
}
-끝-
'프로그래밍공부 > 알고리즘' 카테고리의 다른 글
코딩테스트 - 파일명 정렬 (0) | 2020.08.04 |
---|---|
코딩테스트 - 문자열 압축 (0) | 2020.08.04 |
코딩테스트 - K번째수 (0) | 2020.08.03 |
코딩테스트 - 알고리즘 공부 - 베스트앨범 (2) | 2020.07.28 |
코딩테스트 - 알고리즘 - 다리를 지나는 트럭 (0) | 2020.07.28 |