차곡차곡 쌓아보는 개발 데이터_AI/ML engineer
[알고리즘] 시간복잡도, 공간복잡도 알아보기 본문
- 보통 1초에 3~5억의 연산을 수행 (연산의 종류마다 달라질 수도 있기 때문에 대략적으로 설명)
- logN 같은 경우 밑의 지수가 보통 2인 경우이기 때문에 log2 = 1, log4 = 2, ... , log64 = 6 으로 표현 가능
- 아래의 그림과 같이 n! (팩토리얼 연산) 같은 경우에는 12만 돼도 약 5억이기 때문에 대부분 시간 제한을 통과하기 어려움
* O(NlogN) vs O(N^2)
ex) 주어진 배열을 크기 순으로 정렬하는 문제
- N이 1000이하라면 둘 중 어느 것을 쓰더라도 눈깜빡할 사이에 정렬됨
- N이 100만이라면 nlogn은 1초 내로 정렬 완료, n은 정렬이 완료될 때 까지 거의 1시간 걸림
* 공간복잡도
- 입력의 크기와 문제를 해결하는데 필요한 공간의 상관관계
- 코테에서 별로 신경 안써도 됨
- 이것만 기억해두기 -> 메모리 제한이 512mb일 때 int 변수를 대략 1.2 억개 정도 선언 가능 (int 1개가 4바이트라는 것을 이용해 계산 가능)
- 만약 떠올린 코드가 크기가 5억인 배열을 필요로 하면 해당 풀이는 틀린 코드라는 걸 빠르게 캐치 가능
참고자료 : https://www.youtube.com/watch?v=9MMKsrvRiw4&list=PLtqbFd2VIQv4O6D6l9HcD732hdrnYb6CY&index=2
'알고리즘' 카테고리의 다른 글
[프로그래머스/programmers] 코딩테스트 연습 - 문자열 밀기 파이썬(Python) 풀이 (0) | 2022.11.30 |
---|---|
[프로그래머스/programmers] 코딩테스트 연습 - 최빈값 구하기 파이썬(Python) 풀이 (1) | 2022.11.27 |
[구현] 시뮬레이션, 완전탐색 -이코테, 이것이 코딩 테스트다 (1) | 2022.11.26 |