빙응의 공부 블로그
[Programmers]Lv.1 다트게임 본문
📝풀이
나는 이것을 푸는 것에 있어 자바의 replaceAll을 사용하였다.
사용한 이유는 문제 기본 String의 길이는 6으로 *, #을 제외하고 숫자만 계산한 다음 *,#에 대해 계산하였다.
또한 하다보니 10도 String 길이에 영향을 줘서 W로 대체하였다.
import java.util.Arrays;
class Solution {
public int solution(String dartResult) {
String temp = dartResult.replaceAll("\\*", "").replaceAll("#", "").replaceAll("10", "W");
int[] N = new int[temp.length() / 2];
for (int i = 0; i < N.length; i++) { //각 숫자의 제곱 계산
char SDT = temp.charAt(i * 2 + 1);
if (temp.charAt(i * 2) == 'W') {//만약 W라면 10
N[i] = 10;
} else {
N[i] = Character.getNumericValue(temp.charAt(i * 2));
}
switch (SDT) {
case 'S':
break;
case 'D':
N[i] = (int) Math.pow(N[i], 2);
break;
case 'T':
N[i] = (int) Math.pow(N[i], 3);
break;
}
}
for (int i = 0; i < dartResult.length(); i++) { //*,# 처리
char c = dartResult.charAt(i);
int n = c == '*' ? 2 : c == '#' ? -1 : 1;
if (i == 2) {
N[0] *= n;
} else if (i == dartResult.length() - 1) {
N[2] *= n;
if (c == '*') {
N[1] *= n;
}
} else {
N[1] *= n;
if (c == '*') {
N[0] *= n;
}
}
}
return Arrays.stream(N).sum();
}
}
'Argorithm' 카테고리의 다른 글
[Programmers]Lv.1 이상한 문자 만들기 (0) | 2024.01.08 |
---|---|
[Programmers]Lv.1 비밀지도 (0) | 2024.01.03 |
[Programmers]Lv.1 완주하지 못한 선수 (1) | 2024.01.02 |
[Programmers]Lv.1 K번째 수 (0) | 2024.01.02 |
[Programmers]Lv.1 모의고사 (1) | 2024.01.02 |