< 과제 >
[ 문제 ]
유빈이는 코딩을 하다가 시간 초과가 났다. 그래서 시간 복잡도를 계산하기로 했다.채점 시스템은 1초에 100000000()가지 동작을 할 수 있다.
여러분들은 유빈이를 도와 시간초과가 나는지 확인하는 프로그램을 작성하라.
[ 입력 ]
입력의 첫 번째 줄에는 테스트 케이스들의 수 C가 주어진다.그 다음 C개의 줄에는 시간 복잡도를 나타내는 문자열 S, 각 테스트 케이스마다 입력의 최대 범위 N, 테스트 케이스의 수를 나타내는 T랑 제한시간(초 단위) 를 나타내는 L이 주어진다. (1 <= C <= 100, 1 <= N <= 1000000, 1 <= T, L <= 10, N, T, L은 정수)
시간 복잡도는 다음과 같은 5개 중 하나로 주어진다.
- O (N)
- O (N^2)
- O (N^3)
- O (2^N)
- O (N!)
[ 출력 ]
각 테스트 케이스들에 대하여 시간 초과가 나면 "TLE!", 시간 초과가 나지 않으면 "May Pass." 를 출력한다.[ 예제 입력 1 ]
5
O(N) 1000 10 10
O(2^N) 1000 10 10
O(N!) 2 10 10
O(N^3) 1000 1 10
O(N^3) 1001 1 10[ 예제 출력 1 ]
May Pass.
TLE!
May Pass.
May Pass.
TLE!
< 내 코드 >
import math
C = int(input())
for _ in range(C):
temp = input().split()
S = temp[0]
N, T, L = map(int, temp[1:])
limit = (10 ** 8) * L
if S == "O(N)":
if N * T <= limit:
print("May Pass.")
else:
print("TLE!")
if S == "O(N^2)":
if ((N ** 2) * T) <= limit:
print("May Pass.")
else:
print("TLE!")
if S == "O(N^3)":
if ((N ** 3) * T) <= limit:
print("May Pass.")
else:
print("TLE!")
if S == "O(2^N)":
if ((2 ** N) * T) <= limit:
print("May Pass.")
else:
print("TLE!")
if S == "O(N!)":
if (math.factorial(N) * T) <= limit:
print("May Pass.")
else:
print("TLE!")
< 피드백 >
< 출처 >