1,000,000
을 넘지 않을 때 효과적으로 사용array = [7, 5, 9, 0, 3, 1, 6, 2, 9, 1, 4, 8, 0, 5, 2]
이런 형태의 배열이 있다고 가정 한다면
# 모든 범위를 포함하는 리스트를 선언 후 모든 값을 0으로 초기화
count = [0] *(max(array) + 1)
for i in range(len(array)):
count[array[i]] += 1 # 각 데이터에 해당하는 인게스의 값을 1씩 증가
💡 array의 원소에 한개씩 접근해 가면서 해당 값에 대한 count 리스트에 +1
을 해준다.
# count 리스트에 저장되어 있는 정보 확인
for i in range(len(count)):
for j in range(count[j]):
print(i, end=' ')
~~>
0 0 1 1 2 2 3 4 5 5 6 7 8 9 9
N
K
앞에서부터 데이터를 하나씩 확인하면서 리스트에서 적절한 인덱스의 값을 1씩 증가시킬 뿐만 아니라 추후에 리스트의 해당하는 값을 확인할 때 데이터 중 최댓값의 크기만큼 반복을 수행해야 하기 때문에