[프로그래머스] Lv.1 [1차] 다트 게임

Miro·2022년 8월 11일
0
post-thumbnail

프로그래머스 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]dartResultArrpush 해준다.
그렇지 않다면 dartResult[i]dartResultArrpush 해준다.

반복문을 i가 0부터 dartResultArr의 길이까지 반복한다.

만약 dartResultArr[i]'S', 'D', 'T'라면 각각 dartResultArr[i-1]의 1제곱, 2제곱, 3제곱을 해준뒤 arrpush 한다.
그 이후에 count에 1을 더해준다. -> count'*''#'의 위치를 찾을때 사용

만약 dartResultArr[i]'*'이라면 arr[count-2]arr[count-1]에 각각 2씩 곱해준다.

만약 dartResultArr[i]'#'이라면 arr[count-1]에 -1을 곱해준다.

배열 arr의 모든 요소를 reduce를 사용하여 모두 더한뒤 result에 할당하여 return 한다.

profile
프론트엔드 개발자(진)

0개의 댓글