[프로그래머스] 다트 게임 (JAVA)

유존돌돌이·2021년 10월 7일
0

Programmers

목록 보기
47/167
post-thumbnail

문제 설명

카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다.
갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다.

Code

import java.util.*;
class Solution {
    public int solution(String dr) {
        Map<Character, Integer> hm = new HashMap<>();
        hm.put('S',1);
        hm.put('D',2);
        hm.put('T',3);
        Set<Character> hs = new HashSet<>();
        hs.add('*');
        hs.add('#');
        int idx = 0, sum = 0, bef = 0;
        for(int i=0 ; i<dr.length() ; i++) {
            int i1 = i;
            while(i<dr.length() && Character.isDigit(dr.charAt(i))) {
                i++;
            }
            int num = (int)Math.pow(Integer.valueOf(dr.substring(i1, i)), hm.get(dr.charAt(i)));
            if((i+1)<dr.length() && hs.contains(dr.charAt(i+1))) {
                i++;
                if(dr.charAt(i)=='#') {
                    num *= -1;
                } else {
                    num *= 2;
                    sum += bef;
                }
            }
            sum += num;
            bef = num;
        }
        return sum;
    }
}

0개의 댓글