반응형
2강 : 알고리즘 성능 평가
#복잡도란?
복잡도 : 알고리즘 성능을 나타내는 척도
-
시간 복잡도 - 수행 시간 분석
-
공간 복잡도 - 메모리 사용량 분석
복잡도와 성능 반비례
# 빅오 표기법(Big-O Notation)
가장 빠르게 증가하는 항만을 고려하는 표기
N3(제곱) + 5N(제곱) + 10000 이 있을 때
가장 차수가 끈 N세제곱만 남겨 O(N3(제곱))
# 간단한 시간 복잡도 계산
array = [1,2,3,4,5]
for x in arry:
summary +=x
= > 시간 복잡도 O(N)
#2중 반복문
for i in arry :
for j in array:
temp = i * j
print(temp)
=> 시간 복잡도 O(N제곱)
#알고리즘 설계 Tip
코딩 테스트 문제에서 시간제한은 통상 1~5초가량(시간제한이 있다면 1초 없다면 5초 이내 )
문제에서 가장 먼저 확인해야 하는 내용은 시간제한이다.
N의 범위 - 500 => O(N세제곱)인 알고리즘까지 가능
N의 범위 - 2,000 => O(N제곱)인 알고리즘까지 가능
N의 범위 - 100,000 => O(NlogN)인 알고리즘까지 가능
N의 범위 - 10,000,000 => O(N)인 알고리즘까지 가능
알고리즘 문제 해결 과정
-
지문 읽기 및 컴퓨터적 사고
-
요구사항(복잡도) 분석
-
문제 해결을 위한 아이디어 찾기
-
소스코드 설계 및 코딩
핵심 아이디어를 캐치하여 간결한 게 소스코드 형태로 제출하면 된다!!
시간을 측정하기 위한 과정
import time
start_time = time.time() # 측정시작
# 프로그램 소스코드
end_time = time.time() #측정 종료
print("time:" , end_time - start_time) # 수행 시간 출력
이 자료는 동빈 나 님의 유튜브 영상을 보고 정리한 자료입니다.
참고 : www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC
반응형
'Algorithm' 카테고리의 다른 글
[Algorithm] 4 강 : 파이썬 문법 - 리스트 자료형 (0) | 2020.10.15 |
---|---|
[Algorithm] 3 강 : 파이썬 문법 - 수 자료형 (0) | 2020.10.14 |
[Algorithm] python 괄호 변환 (kakao 2020 프로그래머스) (0) | 2020.09.15 |
[Algorithm] python문자열 압축(kakao 2020 프로그래머스) (0) | 2020.09.14 |
[Algorithm] 프로그래머스 K 번째 수 (0) | 2020.08.05 |