[백준/Python] 21314번. 민겸 수

문제

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

 

 

풀이

우선 "민겸 수"와 "민겸 숫자"는 다른 개념이다. 민겸 숫자가 모이면 민겸 수가 되는것에 주의하자


최소 최대값 모두 MK / K / MMK와 같이 K가 나올때까지 M의 갯수를 센다

 

최대값을 찾는법:

 K가 나올 경우 K까지 포함하여 끊어서 해당하는 민겸숫자를 문제에 제시된 변환 표 대로 변환하여 이어준다.

끊어낸 마지막 덩어리가 M으로 끝날 경우 M의 갯수만큼 1로 채운 값을 이어준다. 

 

최소값을 찾는법:

K가 나올 경우 K를 포함하지 않고 끊어서 해당하는 민겸숫자를 문제에 제시된 변환 표 대로 변환하여 이어준다.

(MMK와 같이 끊어진 경우 K를 포함하지 않고 MM까지만 변환)
그 이후 K를 포함하지 않고 끊었으므로 K의 민겸숫자에 해당하는 5를 이어준다

 

끊어낸 마지막 덩어리가 M으로 끝날 경우 그 덩어리만큼의 민겸 숫자를 구해 이어준다.

 

 

정답 코드

MKNum = input()

answerMax = ''
mCount = 0
for MKDigit  in MKNum:
    if MKDigit == 'K':
        answerMax += str(5 * 10 ** mCount)
        mCount = 0
    else:
        mCount += 1
answerMax += '1' * mCount

answerMin = ''
mCount = 0
for MKDigit  in MKNum:
    if MKDigit == 'K':
        if mCount > 0:
            answerMin += str(10 ** (mCount-1))
        answerMin += '5'
        mCount = 0
    else:
        mCount += 1
if mCount > 0:
    answerMin += str(1* 10**(mCount-1))

print(answerMax)
print(answerMin)