처음에는 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 |
댓글