kakasoo

[node.js] 체육복 ( 프로그래머스 레벨1 ) 본문

프로그래밍/알고리즘 풀이

[node.js] 체육복 ( 프로그래머스 레벨1 )

카카수(kakasoo) 2021. 6. 25. 17:02
반응형
// 프로그래머스 level1 체육복
function solution(n, lost, reserve) {
    var answer = 0;
    let array = new Array(n).fill(1);
    lost.map((losted, i) => {array[losted - 1]--});
    reserve.map((rserv, i) => {array[rserv - 1]+= 1});

    let count = 0;
    for (let i = 0; i < array.length; i++) {
        if (array[i] > 0) {
            count++;
        }
        else if (array[i] === 0 && array[i+1] > 1) {
            count++;
            array[i+1]--;
        }
        else if (array[i] === 0 && array[i-1] > 1) {
            count++;
            array[i-1]--;
        }
    }

    answer = count;
    return answer;
}

그리디 문제는 항상 운에 의존해야 하는 부분이 있다. 다행히 거스름돈 구하는 것 만큼이나 간단한 문제였다.
내 친구가 이 문제를 풀고 있어서 같이 풀어봤는데, 친구는 심히 신기한 방법으로 이 문제를 풀려고 시도했다.
나는 그게 안 될 거라고 생각했는데, 그렇게 해도 정답이 구해지는 것을 봤다.

되게 어려운 방법이었던 거 같은데, 어떻게든 풀리는 것을 보면, 참... 프로그래밍에 정답은 없다.

반응형