[백준/파이썬] 11332번 풀이

업데이트:



문제 정보


풀이

문제

유빈이는 코딩을 하다가 시간 초과가 났다. 그래서 시간 복잡도를 계산하기로 했다.

채점 시스템은 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)가지 동작을 할 수 있다.

여러분들은 유빈이를 도와 시간초과가 나는지 확인하는 프로그램을 작성하라.를 만족하도록 로직을 구성하는 것입니다.

코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.

경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.



이런 주제는 어떠신가요?

비슷한 난이도와 유형의 문제를 이어서 보면 풀이 감각을 더 빠르게 잡기 좋습니다.

댓글남기기