학습
시험

빅오 표기법 판별

난이도
STARTER

문제 설명

어떤 알고리즘에 대해 입력 데이터의 크기가 N일 때, 알고리즘 연산량이 T(N)과 같다고 가정합니다.
T(N)=a N2+b NlogN+c N+d logN+eT(\text{N}) = a\,\text{N}^2 + b\,\text{NlogN} + c\,\text{N} + d\,\text{logN} + e (단, a, b, c, d, e는 0 이상의 정수)

입력으로 각 항의 계수 a, b, c, d, e가 주어졌을 때, N이 충분히 클 때 T(N)의 시간복잡도를 나타내는 빅오 표기법을 문자열로 반환하는 solution 함수를 구현하시오.


개념 설명

시간복잡도 함수 T(N)에서 각 항의 의미는 다음과 같습니다:

  • a(N^2) : 2차 항으로, N이 커질수록 가장 빠르게 증가하는 항
  • bNlogN : N과 logN의 곱 항으로, 2차 항 다음으로 빠르게 증가
  • cN : 1차 항으로, 선형적으로 증가
  • dlogN : 로그 항으로, 매우 천천히 증가
  • e : 상수항으로, N의 크기와 관계없이 일정

N이 충분히 클 때, 가장 큰 차수의 항이 전체 시간복잡도를 결정합니다. 따라서 다음과 같은 우선순위로 빅오 표기법을 결정합니다:

  1. O(N^2) : a > 0일 때 (2차 항이 존재)
  2. O(NlogN) : a = 0, b > 0일 때 (NlogN 항이 존재)
  3. O(N) : a = 0, b = 0, c > 0일 때 (1차 항이 존재)
  4. O(logN) : a = 0, b = 0, c = 0, d > 0일 때 (로그 항이 존재)
  5. O(1) : a = 0, b = 0, c = 0, d = 0, e > 0일 때 (상수항만 존재)

제한 사항

  • a, b, c, d, e는 0 이상의 정수입니다.
  • 입력값 중 적어도 하나는 0이 아닙니다.

예시 테스트케이스 설명

테스트케이스 번호 a b c d e return
1 1 0 1 0 1 "O(N^2)"
2 0 2 2 0 2 "O(NlogN)"
3 0 0 0 3 3 "O(logN)"

1번 테스트케이스 설명

  • a = 1이므로 2차 항이 존재합니다. 따라서 "O(N^2)"를 반환합니다.

2번 테스트케이스 설명

  • a = 0, b = 2이므로 NlogN 항이 존재합니다. 따라서 "O(NlogN)"를 반환합니다.

3번 테스트케이스 설명

  • a = 0, b = 0, c = 0, d = 3이므로 로그 항이 존재합니다. 따라서 "O(logN)"를 반환합니다.