https://programmers.co.kr/learn/courses/30/lessons/17682
📒 문제
💩 코드
class Solution {
public int solution(String dartResult) {
int answer = 0;
int score = 0;
int Befo_Score = 0;
for (int i = 0; i < dartResult.length(); i++) {
char string = dartResult.charAt(i);
if (string > 47 && string < 58) {
score = dartResult.charAt(i) - 48;
if ((dartResult.charAt(i + 1) - 48 == 0) || (i > 0 && dartResult.charAt(i - 1) - 48 == 1)) {
score = 10;
}
} else if (string > 65) {
if (string == 'D') {
score *= score;
} else if (string == 'T') {
score = score * score * score;
}
if (i + 1 < dartResult.length() && dartResult.charAt(i + 1) < 47) {
if (dartResult.charAt(i + 1) == '*') {
answer -= Befo_Score;
answer += Befo_Score * 2 + score * 2;
Befo_Score = score * 2;
} else if (dartResult.charAt(i + 1) == '#') {
answer -= score;
Befo_Score = (-score);
}
} else {
answer += score;
Befo_Score = score;
}
}
}
return answer;
}
}
👉 점수의 범위를 0~9까지로 생각해서 10을 생각하지 못했었다. '*' 기호가 전의 점수까지 2배를 하기때문에 이전의 점수 저장을 잘 했어야했다. 하지만 이부분 구현이 잘못되어 헤맸다.