알고리즘
그리디
[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