본문 바로가기

코딩 테스트/Codility

Codility MaxCounters JavaScript 풀이

https://app.codility.com/programmers/lessons/4-counting_elements/max_counters/

 

MaxCounters coding task - Learn to Code - Codility

Calculate the values of counters after applying all alternating operations: increase counter by 1; set value of all counters to current maximum.

app.codility.com

내가 처음 제출한 코드이다.

function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    var counter = new Array(N);
    
    counter.fill(0);
    
    A.forEach((e, i) => {
        if (e > N) {
            counter.fill(Math.max.apply(null, counter));
        } else {
            counter[e-1]++;
        }
    })
    
    return counter;
}

스코어는 77을 기록했다. 정확성에서는 문제가 없었으나, 성능 문제가 있었다.

 

https://m.blog.naver.com/PostView.nhn?blogId=mouse226&logNo=221305319639&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

Codility - MissingInteger 풀이 (Javascript)

문제 N개의 정수로 이루어진 배열 A가 주어졌을 때, A에 존재하지 않는 가장 작은 양의 정수를 반환하는...

blog.naver.com

 

새로 제출한 코드는 위의 블로그를 참조하여 작성했다.

function solution(A) {
    A.sort(function(a, b) {
        return a-b;
    });
    
    var min = 1;
    
    A.forEach((e, i) => {if (A[i] > 0 && A[i] == min) min++;})
    
    return min;
}

스코어는 100을 기록했는데,

위의 코드에서 A.sort()로 단순히 오름차순 정렬하면 정확성과 성능 모두에서 차이가 있었다.

단순히 sort()를 하면 문자열로 정렬되기 때문이다.

정렬에 관해서 자세히 찾아보는 것이 좋겠다.