[백준/파이썬] 11332번 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 11332번 문제
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
유빈이는 코딩을 하다가 시간 초과가 났다. 그래서 시간 복잡도를 계산하기로 했다.
채점 시스템은 1초에 100000000(108)가지 동작을 할 수 있다.
여러분들은 유빈이를 도와 시간초과가 나는지 확인하는 프로그램을 작성하라.
입력 요약
입력의 첫 번째 줄에는 테스트 케이스들의 수 C가 주어진다.
그 다음 C개의 줄에는 시간 복잡도를 나타내는 문자열 S, 각 테스트 케이스마다 입력의 최대 범위 N, 테스트 케이스의 수를 나타내는 T랑 제한시간(초 단위) 를 나타내는 L이 주어진다. …
출력 요약
각 테스트 케이스들에 대하여 시간 초과가 나면 “TLE!”, 시간 초과가 나지 않으면 “May Pass.” 를 출력한다.
코드
for C in range(int(input())):
s,n,t,l=input().split()
n,t,l=map(int,[n,t,l])
if s[2:-1]=='N':r=n*t
elif s[2:-1]=='N^2':r=n*n*t
elif s[2:-1]=='N^3':r=n**3*t
elif s[2:-1]=='2^N':r=2**n*t
else:
f=i=1
while f <=l*10**8 and i <= n:
f*=i
i+=1
r=f*t
print('TLE!'if r>l*10**8 else'May Pass.')
설명
핵심은 구현 관점에서 유빈이는 코딩을 하다가 시간 초과가 났다. 그래서 시간 복잡도를 계산하기로 했다.
채점 시스템은 1초에 100000000(108)가지 동작을 할 수 있다.
여러분들은 유빈이를 도와 시간초과가 나는지 확인하는 프로그램을 작성하라.를 만족하도록 로직을 구성하는 것입니다.
코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.
경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.
댓글남기기