第1ラウンドダーツ


     점수 : int 0~10
     보너스 : s 1제곱, d 2제곱, t 3제곱 / 점수마다 하나씩 존재

     옵션 : * # 존재 안할 수 있음
     * 지금점수와 직전 점수 두배 / 처음에 * 이면 첫번째점수 두배 / 중첩되면 4배 / # 와 중첩되면 -2배 
     # 지금 점수 -1배


ex1)	1S 2D * 3T	    1의 1제곱 + 2의 2제곱 지금점수와 직전점수 두배 + 3의 세제곱 = 37
ex2)	1D 2S # 10S	    1의 2제곱 + 2의 1제곱 지금!점수 -1배 + 10의 1제곱 = 9
ex3)	1D 2S 0T	    1의 2제곱 + 2의 1제곱 + 0의 세제곱 = 3
ex4)	1S * 2T * 3S	    1의 1제곱 두배 + 2의 3제곱 지금점수와 직전점수 2배 + 3의 1제곱 = 23
ex5)	1D # 2S * 3S	    1의 제곱 -1배 + 2의 1제곱 지금점수와 직전점수 2배 + 3의 1제곱 = 5
ex6)	1T 2D 3D #	= -4
ex7)	1D 2S 3T *	= 59
     
class Solution {
    public int solution(String dartResult) {
        int answer = 0;
        int score = 0;

        double [] arr = new double[dartResult.length()];
        int cnt = 0;

        for(int i=0;i<dartResult.length();i++){
            int option = 0;
            char  c = dartResult.charAt(i);

            //숫자 일 때
            if(c>='0' && c<='9'){ //또는 isDigit()

                if(score == 1 && c=='0') { //10일때
                    score = 10;
                    continue;
                }
                score = c - '0'; //char -> int 변환 // 또는 Character.getNumericValue()
                continue;
            }

            //bonus 제곱
            if(c=='S')     arr[cnt] = Math.pow(score,1);
            else if(c=='D')     arr[cnt] = Math.pow(score,2);
            else if(c=='T')    arr[cnt] = Math.pow(score,3);

            //option
             else if(c=='*'){ //2배
                option = 2;
                cnt--;
            }
            else if(c=='#') { //-1배
                option = -1;
                cnt--;
            }


            //옵션 있을때
            if(option!=0){
                if(cnt!=0 && option==2){
                    arr[cnt-1] *= option;
                }
                arr[cnt] *= option; //첫번째에 옵션 있을때
            }

            cnt++;
        }
        
        for(double k : arr) answer+=k;
        
        return answer;
    }
}
逐字読み出し
  • String
    1)char:s.charAt(index)に変換
    2)string逐字読み出し:s.substring(index,index+1)
  • char c;
  • の整数かどうかを判断
    1) Character.isDigit('c')
    2) if(c>='0' && c<='9')
  • 文字をintに変換
    1) c - '0';
    2) Character.getNumericValue(c)
  • continue;
    繰り返し文(for,while)でcontinueの下のコードをスキップし、繰り返し文
  • を再実行する
  • 平方
    Math.pow(底部、指数);