[프로그래머스, 17682] [1차] 다트 게임 (java)
Problem Solving/Programmers

[프로그래머스, 17682] [1차] 다트 게임 (java)

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/17682

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

728x90

메모리: 67.6 MB, 시간: 0.07 ms

사용 알고리즘: 구현

class Solution {
    public int solution(String dartResult) {
        
        int answer = 0;
        
        // 이전 점수
        int preScore = 0;
        
        // dartResult의 인덱스
        int index = 0;
        
        int score; char bonus;
        while(index < dartResult.length()) {
            // 점수
            score = dartResult.charAt(index++) - '0';
            if(dartResult.charAt(index) == '0') { // 점수가 10일 경우
                score = 10;
                index++;
            }
            
            // 보너스
            bonus = dartResult.charAt(index++);
            if(bonus == 'D') score = (int)Math.pow(score, 2);
            else if(bonus == 'T') score = (int)Math.pow(score, 3);
            
            // 옵션
            if(index < dartResult.length()) {
                if(dartResult.charAt(index) == '*') {
                    preScore *= 2;
                    score *= 2;
                    index++;
                }
                else if(dartResult.charAt(index) == '#') {
                    score *= -1;
                    index++;
                }
            }
            
            answer += preScore;
            preScore = score;
        }
        
        answer += preScore;
        
        return answer;
    }
}
728x90