프로그래머스 Lv.1 [1차] 다트 게임
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 | function solution(dartResult) { let arr = []; let dartResultArr = []; let count = 0; for(let i = 0; i < dartResult.length; i++) { if(!isNaN(Number(dartResult[i])) && !isNaN(Number(dartResult[i+1]))) { dartResultArr.push(dartResult[i] + dartResult[i+1]); i++; } else { dartResultArr.push(dartResult[i]); } } for(let i = 0; i < dartResultArr.length; i++) { if(dartResultArr[i] === 'S') { arr.push(Math.pow(dartResultArr[i-1], 1)); count++; } else if(dartResultArr[i] === 'D') { arr.push(Math.pow(dartResultArr[i-1], 2)); count++; } else if(dartResultArr[i] === 'T') { arr.push(Math.pow(dartResultArr[i-1], 3)); count++; } else if(dartResultArr[i] === '*') { arr[count-2] = arr[count-2] * 2; arr[count-1] = arr[count-1] * 2; } else if(dartResultArr[i] === '#') { arr[count-1] = arr[count-1] * -1; } else { continue; } } return result = arr.reduce((acc, cur) => { return acc + cur; }); } | cs |
반복문을
i
가 0부터dartResult
의 길이까지 반복한다.만약
dartResult[i]
와dartResult[i+1]
이NaN
이 아니라면dartResult[i] + dartResult[i+1]
을dartResultArr
에push
해준다.
그렇지 않다면dartResult[i]
를dartResultArr
에push
해준다.반복문을
i
가 0부터dartResultArr
의 길이까지 반복한다.만약
dartResultArr[i]
가'S'
,'D'
,'T'
라면 각각dartResultArr[i-1]
의 1제곱, 2제곱, 3제곱을 해준뒤arr
에push
한다.
그 이후에count
에 1을 더해준다. ->count
는'*'
과'#'
의 위치를 찾을때 사용만약
dartResultArr[i]
가'*'
이라면arr[count-2]
와arr[count-1]
에 각각 2씩 곱해준다.만약
dartResultArr[i]
가'#'
이라면arr[count-1]
에 -1을 곱해준다.배열
arr
의 모든 요소를reduce
를 사용하여 모두 더한뒤result
에 할당하여 return 한다.