본문 바로가기
Algorithm/PROGRAMMERS[Java]

Lv1. 다트게임[카카오]

by 씨니 2022. 4. 17.
728x90

▶ 문제

 

▶ 풀이방법

카카오 문제에, 문제 설명이 길다보니 Lv1문제임에도 불구하고 겁을 좀 먹었지만,,차근차근 문제를 읽다보니 쉽게 풀수 있는 문제였다.!

문자열의 문자들을 switch~case문으로 판별해 풀이하였다.

++아스키 코드에는 '10'이라는 문자가 없으므로 주의해서 풀이할 것!

class Solution {
    public int solution(String dartResult) {
        int answer = 0;
        int[] arr = new int[3];
        int index = 0;
        for(int i = 0; i < dartResult.length(); i++){
            char c = dartResult.charAt(i);
            if(c == '0') arr[index] = (arr[index] == 1) ? 10 : 0;
            if(c > '0' && c <= '9') {
            	arr[index] = (int)c-48;
            	continue;
            }
            switch(c){
                case 'S' :
                    index++;
                    break;
                case 'D' :
                    arr[index] *= arr[index];
                    index++;
                    break;
                case 'T' :
                    arr[index] *= arr[index] * arr[index];
                    index++;
                    break;
                case '*' :
                    arr[index-1] *= 2;
                    if(index > 1) arr[index-2] *= 2;
                    break;
                case '#' :
                    if(index > 0) arr[index-1] = -arr[index-1];
                    break;     
            }
        }
        for(int a : arr) answer += a;
        return answer;
    }
}

 

728x90

'Algorithm > PROGRAMMERS[Java]' 카테고리의 다른 글

Lv1. 비밀지도[카카오]  (0) 2022.04.17
Lv1. 가운데 글자 가져오기  (0) 2022.04.17
Lv1. 같은 숫자는 싫어  (0) 2022.04.17
Lv1. 나누어 떨어지는 숫자 배열  (0) 2022.04.17
Lv1. 두 정수 사이의 합  (0) 2022.04.16