배씌
2024. 10. 6. 00:26
시간 복잡도란?
: 알고리즘의 성능을 나타내는 지표. 입력 크기에 대한 연산 횟수의 상한
빅오 표기법
public static void main(String[] args){
solution(6);
}
public static void solution(int n){
int count = 0;
for (int i=0; i<n; i++){
for (int j=0; j<n; j++){
count++;
}
]
for (int i=0; i<n; i++){
count++;
}
for (int i=0; i<n*2; i++){
count++;
}
for (int i=0; i<5; i++){
count++;
}
System.out.println(count);
}
위 solution() 함수는 n = x 일때, f(x) = x^2 + 3x + 5 로 표현가능 -> O(x^2)
시간 복잡도를 코딩 테스트에 활용하는 법
연산 횟수는 1,000 ~ 3,000만 정도로 고려해서 시간 복잡도를 생각하면 됨.
ex) 제한 시간이 1초인 문제는 연산 횟수가 3,000만이 넘는 알고리즘은 사용 X
| 시간 복잡도 | N의 가용 범위 |
| O(N!) | 10 |
| O(2^N) | 20~25 |
| O(N^3) | 200~300 |
| O(N^2) | 3,000~5,000 |
| O(NlogN) | 100만 |
| O(N) | 1,000~2,000만 |
| O(logN) | 10억 |