시간복잡도 예측

jjin·2023년 10월 15일
0

백준 채점 환경

  • 클럭 2.9GHz = 29억Hz = 29억/초
  • 코어 10개 = 290억/초 이긴 한데, 서버가 한 문제에 1코어만 쓰지 않을까
  • += 는 어셈블리어 연산 3번

시간복잡도

대략 1초에 1억번 한다고 생각

N > 100,000,000 : O(logN), O(1)
N <= 100,000,000 : O(N)
N <= 1,000,000 : O(NlogN)
N <= 10,000 : O(N^2)
N <= 3,000 : O(N^2logN)
N <= 500 : O(N^3)
N <= 100 : O(N^4)
N <= 25 : O(2^N)
N <= 11 : O(N!)

시간복잡도 별 유형

  • 입력이 100 이하인 경우
    o 완전 탐색 (dfs, bfs)
    o 백트래킹
  • 입력이 10,000 이하인 경우
    o 최대 O(n^2) 이내로 끝내야하는 문제
    o 문제에 따라 O(n^2 log n)까지는 허용
    o n*n 2 차원 리스트를 모두 순회해야하는 문제가 많음
  • 입력이 1,000,000 이하인 경우
    o 최대 O(n log n)으로 끝내야하는 문제
    o 힙, 우선순위 큐
    o 정렬
    o 동적 계획법
    o 위상 정렬
    o 다익스트라 알고리즘
  • 입력이 100,000,000 이하인 경우
    o 최대 O(n)으로 끝내야하는 문제
    o 동적 계획법
    o 그리디
  • 그 이상인 경우
    o 최대 O(log n)으로 끝내야하는 문제가 많음
    o 거의 안나오는 문제 유형
    o 이진탐색
profile
진짜

0개의 댓글