https://school.programmers.co.kr/learn/courses/30/lessons/17682
현재 문자가 숫자인 경우 score에 문자열 합 연산을 사용하여 숫자(문자열) 값을 갱신한다.
보너스 문자인 경우 score 값을 보너스 점수에 해당하는 만큼 score에 제곱 연산을한다.
옵션 문자인 경우 scoreLog의 맨 마지막 점수값(이전 점수값)과 score 값에 * 2 한다.
이 처리를 완료하고 다음 글자가 숫자이거나 없으면
scoreLog에 score 값을 push 한다.문자열을 다 돈 후 scoreLog에 저장된 점수 값들을 모두 더해서 반환한다.
function solution(dartResult) { let scoreLog = []; let score = ""; for (let i = 0; i < dartResult.length; i++) { if (Number.isInteger(dartResult[i] * 1)) { // 숫자인 경우 score += dartResult[i]; } else { // 숫자가 아니면 switch (dartResult[i]) { case 'S': score **= 1; break; case 'D': score **= 2; break; case 'T': score **= 3; break; case '*': scoreLog[scoreLog.length - 1] *= 2; score *= 2; break; case '#': score *= -1; break; } if (Number.isInteger(dartResult[i+1] * 1) || i+1 === dartResult.length ) { scoreLog.push(score); score = ""; } } } return scoreLog.reduce((sum, v)=> sum+=v); }