문제 링크
문제 풀이
구현 문제이다.
결국 dartResult의 모든 요소를 다 점검해야하므로 시간복잡도는 n이 된다.
가능한 가독성 좋게 풀려고 했다.
- 10 체크
- 0-9 체크
- 이외 문자 체크 => cal() 호출
전체 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| function solution(dartResult) { const darts = dartResult.split(""); let scores = [0, 0, 0]; let i = -1;
const cal = (input) => { switch (input) { case "D": scores[i] = Math.pow(scores[i], 2); break; case "T": scores[i] = Math.pow(scores[i], 3); break; case "*": scores[i] = scores[i] * 2; if (i > 0) scores[i - 1] = scores[i - 1] * 2; break; case "#": scores[i] = scores[i] * -1; break; case "S": default: break; } };
while (darts.length > 0) { const now = darts.shift(); if (now === "1" && darts[0] === "0") { i++; darts.shift(); scores[i] = 10; } else if (now < 10) { i++; scores[i] = parseInt(now); } else cal(now); }
return scores.reduce((acc, cur) => acc + cur); }
|