1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import math
import sys
def solution(oper,n,t,l):
n,t,l=int(n),int(t),int(l)
oneSecond=(10**8)*l
if oper=='O(N)':
bigO=n*t
elif oper=='O(2^N)':
bigO=pow(2,n)*t
elif oper == 'O(N!)':
bigO=math.factorial(n)*t
elif oper == 'O(N^3)':
bigO=pow(n,3)*t
elif oper == 'O(N^2)':
bigO = pow(n, 2) * t
if oneSecond<bigO:print("TLE!")
else:print("May Pass.")
n=int(input())
for _ in range(n):
oper,n,t,l=sys.stdin.readline().split()
solution(oper,n,t,l)
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import math
import sys
def myFactorial(n,t,l):
start=t
for i in range(1,n+1):
start*=i
if start>(10**8)*l : return False
return True
def solution(oper,n,t,l):
n,t,l=int(n),int(t),int(l)
if oper=='O(N)':
bigO=n*t
elif oper=='O(2^N)':
bigO=(2**n)*t
elif oper == 'O(N^3)':
bigO=(n**3)*t
elif oper == 'O(N^2)':
bigO = (n**2) * t
elif oper == 'O(N!)':
return myFactorial(n,t,l)
if (10**8)*l<bigO:return False
else: return True
n=int(input())
for _ in range(n):
oper,n,t,l=sys.stdin.readline().split()
if solution(oper,n,t,l) : print("May Pass.")
else:print("TLE!")
|
cs |
1차시도: python 3 - math.factorial() 써서 시간초과
2차시도: pypy3 - math.factorial() 써도 간신히 통과
3차시도: python 3 math.factorial()안쓰고 팩토리얼 최종 값을 구하는게 아니라 중간에 타임리밑트 보다 넘으면 False 를 리턴하게 구현
반응형
'python-algorithm' 카테고리의 다른 글
백준 17952 과제는 끝나지 않아! (0) | 2021.12.30 |
---|---|
백준 11899 괄호 끼워넣기 (0) | 2021.12.29 |
백준 2729 이진수 덧셈 (0) | 2021.12.28 |
백준 2870 수학숙제 (0) | 2021.12.28 |
백준 1822 차집합 (0) | 2021.12.27 |
댓글