class Solution {
public int solution(String dartResult) {
int[] score = new int[3];
char[] bonus = new char[3];
char[] option = new char[3];
int idx=0;
for(char c:dartResult.toCharArray()) {
if(c-'0'>=0 && c-'0'<=10) {
if(score[idx]==1) score[idx] = 10;
else score[idx] = c-'0';
} else if(c=='S' || c=='D' || c=='T') {
bonus[idx] = c;
idx++;
} else {
option[idx-1] = c;
}
}
for(int i=0;i<bonus.length;i++) {
if(bonus[i]=='D') score[i] = score[i]*score[i];
else if(bonus[i]=='T') score[i]= score[i]*score[i]*score[i];
}
for(int i=0;i<option.length;i++) {
if(option[i]=='*') {
score[i] *= 2;
if(i!=0) score[i-1] *= 2;
}
else if(option[i]=='#') {
score[i] *= (-1);
}
}
int answer = score[0] + score[1] + score[2];
return answer;
}
}
stack을 사용한 사람도 있었고, 정규식을 사용한 사람도 있었다.
그치만 .. 내가 짜서 그런가 난 내 풀이가 가장 직관적이고 이해하기 쉬운 것 같다 ㅎ
문제가 길어서 무서웠지만 막상 풀어보니 어렵지 않았던 문제
소요시간 : 22분