티스토리 뷰

반응형

 문제

 

app.codility.com/demo/results/trainingKZ7PTU-ND7/

 

Test results - Codility

Write a function def solution(A) that, given an array A consisting of N integers, returns the number of distinct values in array A. For example, given array A consisting of six elements such that: A[0] = 2 A[1] = 1 A[2] = 1 A[3] = 2 A[4] = 3 A[5] = 1 the f

app.codility.com

 

 

 

 

 

 문제 상황

 

- 서로 다른 숫자의 종류 찾기

 

 

 

 

 

 해결 전략

 

- set을 사용하면 쉽게 해결 가능하고, set을 사용 못하는 경우를 생각해 dict도 사용해봤다.

 

 

 

 

 

 코드

 

1
2
3
4
5
6
7
8
def solution(A):
    check = {}
    for i in range(len(A)):
        check[A[i]] = check.get(A[i], 0+ 1
    return len(check.keys())
# set 사용    
def solution(A):
    return len(set(A))
cs

 

 

 

 

 

 해설

 

- 속도 차이는 없었다. set를 사용하지 않고 시도해보았으나 속도는 O(N) 또는 O(NlogN)으로 동일하였다.

 

 

 

 

 

 새로 학습한 것 & 실수 

 

-  파이썬에서 set 역시 list 와 같이 iterable 한 자료구조이긴 하지만, list 에 비해서 iteration 성능은 떨어지는 것으로 알려져 있다. 대신 hash 기반으로 만들어지기 때문에 검색 속도는 list 에 비해 훨씬 뛰어나다.

 

반응형
댓글