Category
알고리즘  그리디

[21314] 민겸 수

by Hwang

문제

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


문제

K를 만났을 때 십진수로 변환해야 한다.

큰 값을 구해줄 때는 K를 포함한 문자를 십진수로 변환해줘야 10^n 에서 5를 곱할 수 있다. 그러나 최소 값에서는 값을 최대한 낮춰야하기 때문에 k를 따로 변환해주고, M먼저 변환하는 방식으로 구해주어야한다.

만약 K가 뒤에 나오지 않는 상황에서는 M하나를 그대로 1로 변환해주어야 값을 최대로 변환할 수 있다. 또한 최소값을 구해줄 때는 당연히 M을 묶어서 계산해준다.

import sys

number = sys.stdin.readline().strip()
min_result = ''
max_result = ''
temp = ''
for c in number:
    if c == 'K':
        min_result += str(10**(len(temp)-1) if len(temp)-1 >= 0 else '') + '5'
        max_result += str(10**(len(temp)) * 5)
        temp = ''
        continue
    temp += c
if temp:
    min_result += str(10**(len(temp)-1))
    max_result += temp.replace('M', '1')
print(max_result)
print(min_result)


 Comment