티스토리 뷰

반응형
깃허브 : https://github.com/miiingo/codility

Task description

원본 사이트 : app.codility.com/programmers/lessons/6-sorting/distinct/

 

Distinct coding task - Learn to Code - Codility

Compute number of distinct values in an array.

app.codility.com

- N 개의 정수로 구성된 배열 A
- 배열 A에 포함된 고유한 값의 개수를 return
- 가장 효율적인 알고리즘 작성
- N은 [0..100,000] 범위 내의 정수
- 배열 A의 각 요소는 [-1,000,000..1,000,000] 범위의 정수

 

Solution

CASE 1: Set 객체를 사용한 배열 A 요소 체크 - 100%

// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');

function solution(A) {
    // write your code in JavaScript (Node.js 8.9.4)
    const N = A.length;
    let values = new Set();
    
    for(let i=0; i<N; i++){
        values.add(A[i]);
    }
    
    return values.size;
}

- N : 배열 A의 길이
- values : 배열 A의 요소를 저장하는 Set 객체
- for문을 돌며 배열 A의 요소들을 values에 추가
- for문이 끝나면 values의 size를 return

 

CASE 1: Result

 

CASE 1: Analysis

The solution obtained perfect score.
이 솔루션은 완벽한 점수를 얻었습니다.

 

결론

javascript의 Set 객체는 중복을 제거하여 고유한 값만을 저장하기 때문에 배열 A의 요소들을 Set 객체에 저장한 뒤, Set 객체의 size를 return하면 간단하게 해결.

Set 객체를 이용하는 것이 효율성이 떨어지지 않을까 걱정했는데, 100점이 나오는걸 보면 Set 객체의 사용 자체는 성능에 크게 영향을 주지 않는 것 같음.

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함