성장기록지

백준 21314 민겸 수 (python) 본문

알고리즘

백준 21314 민겸 수 (python)

pengcon 2025. 1. 14. 21:32

문제

풀이

같은 단어를 그리디를 통해 어떻게 최대값과 최소값을 구별하는지가 목표인 문제다. 

나는 다음과 같이 설정하고 문제를 풀었다.

 

  • 최댓값은 M의 값들을 모두 10으로 곱해 누적한 뒤 K를 만나면 최종적으로 5를 곱해 처리.
  • 최소값은 M의 길이에 따라 지수 계산 (10^(길이-1))으로 값을 처리하며, K는 5를 직접 추가

생각보다 쉽게 풀려서 놀랐던 문제이다.

 

코드

n = input()
num=''
ans_lst=[]

for i in n:
    num= num+i
    if i=='K':
        temp=1
        for j in num:
            if j =='M':
               temp= temp*10
            elif j=='K':
                temp = temp*5
        ans_lst.append(str(temp))
        num=''
if num!='':
    for i in num:
        ans_lst.append(str(1))
for i in ans_lst:
    print(i,end='')
print()

num=''
ans_lst=[]
for i in n:
    if i=='K':
        if len(num)>0:
            ans_lst.append(str(1*(10**(len(num)-1))))
            num=''
        ans_lst.append(str(5))
    elif i=='M':
        num=num+i
if len(num)>0:
    ans_lst.append(str(1*(10**(len(num)-1))))
    num=''  
for i in ans_lst:
    print(i,end='')