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)
'Programming [Python] > 백준 알고리즘 솔루션' 카테고리의 다른 글
#299 백준 파이썬 [1100] 하얀 칸 (0) | 2019.12.18 |
---|---|
#298 백준 파이썬 [12852] 1로 만들기 2 - 다이나믹 프로그래밍 (0) | 2019.12.18 |
#296 백준 파이썬 [11946] ACM-ICPC (0) | 2019.12.18 |
#295 백준 파이썬 [11945] 뜨거운 붕어빵 (0) | 2019.12.18 |
#294 백준 파이썬 [11944] NN (0) | 2019.12.18 |