반응형
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
public int solution(String dartResult) {
List<Integer> answer = new ArrayList<>();
char[] darts = dartResult.toCharArray();
int num = 0;
for(int i = 0; i < darts.length; i++) {
if(Character.isDigit(darts[i])) {
num = darts[i] - '0';
if(darts[i] == '1' && darts[i+1] == '0') {
num = 10;
i += 1;
}
} else {
if(getBonusNum(darts[i]) > -1) {
num = (int)Math.pow(num, getBonusNum(darts[i])+1);
} else if(darts[i] == '*') {
if(answer.size() > 0){
int preNumIndex = answer.size()-1;
answer.set(preNumIndex, answer.get(preNumIndex)*2);
}
num *= 2;
} else if(darts[i] == '#') {
num *= -1;
}
if(num != 0 && (i == darts.length-1 || Character.isDigit(darts[i+1]))) {
answer.add(num);
}
}
}
return answer.stream().mapToInt(Integer::intValue).sum();
}
public static int getBonusNum(char ch) {
List<Character> bonusNum = Arrays.asList('S', 'D', 'T');
if(bonusNum.indexOf(ch) > 0) {
return bonusNum.indexOf(ch);
}
return -1;
}
}
반응형
'개발 > 알고리즘' 카테고리의 다른 글
Programmers - 괄호 회전하기 (0) | 2021.12.29 |
---|---|
Programmers - 오픈채팅방 (0) | 2021.12.25 |
위클리 챌린지 - 최소직사각형 (Java, Javascript) (0) | 2021.11.18 |
Programmers - 크레인 인형뽑기 게임 (0) | 2021.09.09 |
Programmers - 위클리 4주차 (0) | 2021.09.06 |