class Solution { public int solution(String dartResult) { int answer = 0; int[] sum = new int[3]; // 3번의 다트 점수 배열 int index=0; int number=0; for(int i=0; i<dartResult.length(); i++){ int ch = dartResult.charAt(i); if('0'<= ch && ch<='9'){ if(dartResult.charAt(i+1)=='0'){ //숫자 다음에 0이 오는거는 10밖에 없음 i++; number = 10; }else{ number = ch - '0'; // int형으로 바꾸기 } } if(ch=='S'){ //그대로 sum[index++] = number; }else if(ch=='D'){ // 제곱 sum[index++] = number*number; }else if(ch=='T'){ // 3제곱 sum[index++] = number*number*number; }else if(ch=='*'){ // 현재 점수와 그전 점수 *2 sum[index-1] *=2; if(index-2 >=0){ //첫번째 점수 후에 나올 수도 있으니 인덱스 check sum[index-2] *=2; } }else if(ch=='#'){ // #일때 현재 점수 -1곱하기 sum[index-1] *= -1; } } for(int i : sum){ // sum의 모든 값들의 합 = 점수 answer += i; } return answer; } }
이 문제 풀때에는 제곱수가 그렇게 크지 않아 number x number x number 이런식으로 했지만 더 큰 상황에서는 반복해서 쓰기에는 불편한다.
그 방법을 해결해 줄 수 있는 것이 Math.pow(숫자,제곱수)를 하면 된다.
ex) 3^3 = Math.pow(3,3) 이런식으로 하면된다.
<주의할 점 : 반환 타입은 int가 아니라 double이다.>