본문 바로가기
Java/Programmers

[Lv.1]다트 게임

by GLOWWW 2023. 1. 28.


처음에는 String make_num을 하지 않고 int로 했었다... 10일 경우를 고려하지 않았었기에.. 테스트케이스2번에서 바로 오류가났고, 해결하기위해 보니 String으로 바꾸는것이 좋았다.

package Lv_1;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class 다트게임 {
    public static int solution(String dartResult) {
        int answer = 0;
        int[] result = new int[3];
        char[] dR = dartResult.toCharArray();
        int idx = 0, num = 0;
        String make_num = "";
        for (int i = 0; i < dartResult.length(); i++) {
            if (dR[i] >= '0' && dR[i] <= '9') {
                make_num += dR[i];
            } else if (Character.isLetter(dR[i])) {
                num = Integer.parseInt(make_num);
                if (dR[i] == 'S') {
                    result[idx++] = (int) Math.pow(num, 1);
                } else if (dR[i] == 'D') {
                    result[idx++] = (int) Math.pow(num, 2);

                } else if (dR[i] == 'T') {
                    result[idx++] = (int) Math.pow(num, 3);
                }
                make_num = "";
            } else {
                if (dR[i] == '*') {
                    result[idx - 1] *= 2;
                    if (idx - 2 >= 0) {
                        result[idx - 2] *= 2;
                    }
                } else {
                    result[idx - 1] *= -1;
                }
            }
        }
        answer = Arrays.stream(result).sum();
        return answer;
    }

    public static void main(String[] args) {
        String dartResult = "1S2D*3T";
//        String dartResult = "1D2S#10S";
//        String dartResult = "10D4S10D";
        int result = solution(dartResult);
        System.out.println(result);
    }
}

'Java > Programmers' 카테고리의 다른 글

[Lv.1]숫자 짝꿍  (0) 2023.01.30
[Lv.1]완주하지 못한 선수  (0) 2023.01.30
[Lv.1]가장 가까운 같은 글자  (0) 2023.01.27
[Lv.1]실패율  (0) 2023.01.27
[Lv.1]푸드파이트 대회  (0) 2023.01.26

댓글