본문 바로가기

Programming [Python]/백준 알고리즘 솔루션

#297 백준 파이썬 [11947] 이런 반전이

https://www.acmicpc.net/problem/11947

 

SOLUTION

자릿수 1자리 중 위 문제를 만족하는 가장 큰 수는 4 * 5 이다.

자릿수 2자리 중 위 문제를 만족하는 가장 큰 수는 49 * 50 이다.

자릿수 3자리 중 위 문제를 만족하는 가장 큰 수는 499 * 500 이다.

자릿수 4자리 중 위 문제를 만족하는 가장 큰 수는 4999 * 5000 이다.

4자리 수의 가장 큰 수는 1000 * 8999부터 시작해서 4999 * 5000으로 갈때 까지 증가하다 이후 감소 추세를 보인다.

따라서 수가 주어지면 자릿수를 도출한 다음 499...99 보다 클 경우 499...99 * 500...00을 출력하고

아니라면 해당 수 * 뒤집은 수를 출력하면 된다.

PYTHON CODE

T = int(input())

for _ in range(T):
    N = input()
    T5 = 5 * (10 ** (len(N)-1)) - 1 #49...9
    num_1 = '' #원래 수
    num_2 = '' #뒤집힐 수
    
    if int(N) >= T5: #49...99 * 50..00 을 출력
        num_1 = T5 + 1
        num_2 = T5
        
    else: #입력된 수를 그대로 출력
        num_1 = int(N)
        
        for i in N: #뒤집는 for문
            num_2 += str(9 -int(i))
        num_2 = int(num_2)
        
    print(num_1 * num_2)