import java.util.*;
class Solution {
public int solution(String dartResult) {
int answer = 0;
double[] result = new double[3]; //다트 기회는 3번
String[] c = dartResult.split(""); //각 문자별 구별
int num=0;
for(int i=0; i<c.length; i++ ){
switch(c[i]){ //문자별로 제곱연산
case "S": result[num++]=Math.pow(Integer.parseInt(c[i-1]), 1);
if(i>1&&c[i-2].equals("1")&&c[i-1].equals("0")) result[num-1] = 10; //숫자 10 구별
break;
case "D": result[num++]=Math.pow(Integer.parseInt(c[i-1]), 2);
if(i>1&&c[i-2].equals("1")&&c[i-1].equals("0")) result[num-1] = 100;
break;
case "T": result[num++]=Math.pow(Integer.parseInt(c[i-1]), 3);
if(i>1&&c[i-2].equals("1")&&c[i-1].equals("0")) result[num-1] = 1000;
break;
case "*":
if(num==1){ // 곱하기 제한이 당첨 전 숫자도 포함 하지만 첫번째 당첨은 전이 없기에 따로 뺌
result[num-1] *=2;
}else{ // 첫번째가 아니고부터는 전 숫자가 있기에 for문 돌림
for(int j=num-2; j<num; j++){
result[j] *= 2;
}
}
break;
case "#": result[num-1] = result[num-1]*-1; // #일때는 그 숫자를 음수로
break;
}
}
answer = (int)(result[0]+result[1]+result[2]);
return answer;
}
}
/* 신기하게 전날에 계속 고민할 때는 알고리즘이 생각이 안났는데
오늘 아무생각없이 다시 보니깐 딱 알고리즘이 떠올랐다.
열심히 계속 본다고 머리가 잘 굴러가지는 않는다는걸 깨달았다. */
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
자바(HashMap) (0) | 2023.02.04 |
---|---|
Iterator vs Stream (0) | 2023.01.09 |
[Level 1] 자연수 뒤집어 배열로 만들기 (0) | 2022.08.11 |
[Level 1] 시저 암호 (0) | 2022.08.11 |
[Level 1] 로또의 최고 순위와 최저 순위 (0) | 2022.08.11 |
댓글