본문 바로가기

코딩 테스트/Codility

Codility PermMissingElem JavaScript 풀이

https://app.codility.com/programmers/lessons/3-time_complexity/perm_missing_elem/

 

PermMissingElem coding task - Learn to Code - Codility

Find the missing element in a given permutation.

app.codility.com

내가 제출한 코드는 아래와 같다.

function solution(A) {
    // write your code in JavaScript (Node.js 8.9.4)
    if (A.length === 0) return 1;
    
    let sum1 = A.reduce((acc, cur) => {
        return acc + cur;  
    })
    
    let sum2 = ((A.length + 1) * (A.length + 2)) / 2
    
    return Math.floor(sum2 - sum1);
}

sum2는 element가 모두 있다고 가정한 배열의 합, sum1은 주어진 배열의 합이다.

즉, 정상적인 배열에서 element가 하나 없는 배열의 합을 빼면 없는 element를 구할 수 있다.

빈 배열인 경우는 1이 없는 배열이므로 1을 return 해주어야 한다.

 

앞으로 다른 문제들도 빈 배열의 경우를 항상 염두에 두고 풀어야겠다.

그리고 이 문제는 reduce나 반복문을 쓰지 않더라도 구하는 방법이 있을 거 같은데.. 다른 방법을 생각해보자.