개발/알고리즘

Programmers - [1차] 다트 게임

devNam 2021. 11. 19. 20:29
반응형
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;
    }
}
반응형