Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 정보를 담을 수 있는 그릇
- 딥러닝
- html
- insert()
- 귀도 반 로섬
- 차집합
- append()
- pop()
- 변할 수 있는
- 파이썬
- 조지 불
- a=1
- input()
- null # undefined
- Python
- 입출력
- 변수
- 합집합
- del()
- Java Script # == # === # difference # 차이
- 1일차
- 성적 입력받기
- 부스트캠프
- index()
- 조건문 큰 수부터 입력받아야하는 이유
- 그룹 # 그룹 해체 # 단축키 #figma #Figma
- 변수와 입출력
- 리스트와 차이점
- 불리안
- false
Archives
- Today
- Total
I about me
[Do it! 알고리즘 코딩테스트 with Python] 시간복잡도 본문
Algorithm/Do it! 알고리즘 코딩테스트 with Python
[Do it! 알고리즘 코딩테스트 with Python] 시간복잡도
ssungni 2024. 3. 6. 17:34시간복잡도
다음 시간 복잡도 예제를 통해 '빅오메가, 빅세타, 빅오'에 대해서 알아보자면 다음과 같다.
import random
findNumber = random.randrange(1, 101)
for i in range(1, 101):
if i == findNumber:
print(i)
break
빅오메가(Ω(n))
- 최선일 때(best case)의 연산 횟수를 나타낸 표기법
- 시간복잡도: 1 (findNumber로 1을 생각하고 있었는데, i가 1부터 시작할 수 있으니까 바로 값을 찾았기 때문)
빅세타(θ(n))
- 보통일 때(average case)의 연산 횟수를 나타낸 표기법
- 시간복잡도: N/2 = 50
빅오(O(n))
- 최악일 때(worst case)의 연산 횟수를 나타낸 표기법
- 시간복잡도: N
- 코딩테스트 준비 시 빅오법으로 볼 것! 즉, 최악을 생각하면서 문제를 풀어나갈 것
파이썬은 1초에 2000만 번 계산을 한다고 한다. 그럼 시간 제한이 2분이라고 하면 4000만 번 계산하는 것이다.
어떤 정렬하는 문제에서 1<N<1,000,000 이라는 조건이 있을 때 최악인 1,000,000을 각각 버블 정렬 시간 복잡도와 병합 정렬 시간 복잡도에 넣어 계산하여 알고리즘을 찾는 것이 중요하다. (참고로, 버블 정렬의 시간복잡도는 O(n2), 병합 정렬 의 시간복잡도는 O(nlog(n))임)
즉, 가장 먼저 시간복잡도를 도출할 수 있어야 하며, 그에 맞는 알고리즘, 코드 로직 개선이 필요하다는 의미이다.
'Algorithm > Do it! 알고리즘 코딩테스트 with Python' 카테고리의 다른 글
[Do it! 알고리즘 코딩테스트 with Python] 구현 (1) | 2024.03.12 |
---|---|
[Do it! 알고리즘 코딩테스트 with Python] 구간합 (0) | 2024.03.12 |
[Do it! 알고리즘 코딩테스트 with Python] 스택과 큐 (0) | 2024.03.11 |
[Do it! 알고리즘 코딩테스트 with Python] 배열과 리스트 (0) | 2024.03.06 |
[Do it! 알고리즘 코딩테스트 with Python] 디버깅 (0) | 2024.03.06 |