
알고리즘 선택의 기준 ⇒ 시간복잡도
주어진 문제를 해결하기 위한 연산 횟수
python → 2000만 번 ~ 1억 번의 연산을 1초의 수행 시간으로 예측
연산 횟수는 1초에 2000만 번을 기준으로 생각,,
import random
findNumber = random.randrange(1, 101) # 1~100 사이 랜덤값 생성
for i in range(1, 101):
if i == findNumber:
print(i)
break
코딩테스트에서는 빅-오 표기법 사용 → O(n)
⇒ 항상 최악의 경우 생각하기
코딩 문제에서 데이터 범위 확인(제일 큰 수 확인) !!
ex)
데이터 범위 : 0 ~ 100,0000
시간 제한 : 2초
⇒ 조건을 만족하려면 4000만 번 이하의 연산 횟수로 해결 필요
[사용가능한 2개의 알고리즘]
N = 100000
cnt = 1
for i in range(N):
print("연산 횟수" + str(cnt))
cnt += 1
연산 횟수 = N
N = 100000
cnt = 1
for i in range(N):
print("연산 횟수" + str(cnt))
cnt += 1
for i in range(N):
print("연산 횟수" + str(cnt))
cnt += 1
for i in range(N):
print("연산 횟수" + str(cnt))
cnt += 1
연산 횟수 = 3N
⇒ 3배 차이
코딩 테스트에서는 상수를 무시하므로 시간복잡도는 O(N)으로 동일함
N = 100000
cnt = 1
for i in range(N):
for j in range(N):
print("연산 횟수" + str(cnt))
cnt += 1
연산 횟수 = N^2
중첩이 있는 부분 O(N^2) → 시간 가장 많이 걸리기 때문