[Programmers][Java] 다트게임

HyeBin, Park·2021년 4월 29일
0

Programmers

목록 보기
2/26
post-thumbnail

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

📒 문제

💩 코드

class Solution {
    public int solution(String dartResult) {
        int answer = 0;
        int score = 0;
        int Befo_Score = 0;
        for (int i = 0; i < dartResult.length(); i++) {
            char string = dartResult.charAt(i); //다트 결과중 문자 하나
            //숫자
            if (string > 47 && string < 58) {
                score = dartResult.charAt(i) - 48;
                if ((dartResult.charAt(i + 1) - 48 == 0) || (i > 0 && dartResult.charAt(i - 1) - 48 == 1)) {
                    score = 10;
                }
            } else if (string > 65) {

                if (string == 'D') {
                    score *= score;
                } else if (string == 'T') {
                    score = score * score * score;
                }

                // 기호
                if (i + 1 < dartResult.length() && dartResult.charAt(i + 1) < 47) {
                    if (dartResult.charAt(i + 1) == '*') {
                        answer -= Befo_Score;
                        answer += Befo_Score * 2 + score * 2;
                        Befo_Score = score * 2;

                    } else if (dartResult.charAt(i + 1) == '#') {
                        answer -= score;
                        Befo_Score = (-score);
                    }

                } else {
                    answer += score;
                    Befo_Score = score;
                }
            }
        }
        return answer;
    }
}

👉 점수의 범위를 0~9까지로 생각해서 10을 생각하지 못했었다. '*' 기호가 전의 점수까지 2배를 하기때문에 이전의 점수 저장을 잘 했어야했다. 하지만 이부분 구현이 잘못되어 헤맸다.

0개의 댓글