코딩 테스트 문제를 풀 때, 시간과 메모리를 측정하는 방법을 알아보자!
파이썬에서는 프로그램 수행 시간과 메모리 사용량을 측정할 수 있다.
문제를 풀면서, 자신이 제대로 알고리즘을 작성하고 있는지 알아야 하기 때문이다. 몇몇 기업은 코딩 테스트를 볼 때, 제출 횟수를 제한 하기 때문에 시간과 메모리를 중간에 체크하는 법을 알면 문제를 옳은 알고리즘으로 풀었는지 미리 알 수 있을 것이다.
아래는 특정한 프로그램의 수행 시간을 측정하는 소스코이다.
import time
start_time = time.time() # 측정 시작
# 프로그램 소스코드 ~~~~
end_time = time.time() # 측정 종료
print("time : ", end_time - start_time) # 수행시간 출력
예를 들어, '선택 정렬'과 '파이썬의 기본 정렬 라이브러리'의 속도를 비교할 때는 아래와 같이 소스코드를 작성할 수 있다.
선택 정렬을 사용할 때, 최악의 경우 시간 복잡도가 O(N²)이며, 파이썬의 기본정렬 라이브러리의 최악의 경우 시간 복잡도는 O(NlogN) 을 보장하여 상대적으로 빠르다.
from random import randint
import time
# 배열이 10000개의 정수를 삽입
array = []
for _ in range(10000):
array.append(randint(1, 100)) # 1부터 100 사이의 랜덤한 정수
# 선택 정렬 프로그램 성능 측정
start_time = time.time()
# 선택 정렬 프로그램 소스코드
for i in range(len(array)):
min_index = i # 가장 작은 원소의 인덱스
for j in range(i+1, len(array)):
if array[min_index] > array[j]:
min_index = j
array[i], array[min_index] = array[min_index], array[i] # swap
end_time = time.time() # 측정 종료
print("선택 정렬 성능 측정: ", end_time - start_time) # 수행시간 출력
# 배열을 다시 무작위 데이터로 초기화
array = []
for _ in range(10000):
array.append(randint(1, 100)) # 1부터 100 사이의 랜덤한 정수
# 기본 정렬 프로그램 성능 측정
start_time = time.time()
# 기본 정렬 라이브러리 사용
array.sort()
end_time = time.time() # 측정 종료
print("기본 정렬 라이브러리 성능 측정 : ", end_time-start_time) # 수행시간 출력
선택 정렬은 꽤나 시간이 걸렸고, 기본 정렬 라이브러리를 사용했을 때는 1초도 채 걸리지 않을 만큼 짧은 시간이 걸렸다. 이렇듯, 라이브러리를 제대로 활용하는 능력도 많이 알고리즘 문제를 풀어봄으로써 실력을 키워야 한다.
반응형
'컴퓨터 공부 > 🧮 알고리즘' 카테고리의 다른 글
정렬 - 연속된 데이터를 기준에 따라서 정렬하기 위한 알고리즘 (0) | 2021.08.03 |
---|---|
DFS/BFS - 그래프를 탐색하기 위한 알고리즘 (0) | 2021.07.24 |
구현 (0) | 2021.07.18 |
그리디(Greedy) (0) | 2021.07.06 |
복잡도(Complexity)-시간복잡도 와 공간복잡도 (0) | 2021.07.06 |