반응형
코드
def get_min():
cnt = 0
ans = []
for i in inp:
if i == 'M':
cnt += 1
elif i == 'K':
if cnt != 0:
ans.append(10**(cnt-1))
cnt = 0
ans.append(5)
if cnt != 0:
ans.append(10**(cnt-1))
return ans
def get_max():
cnt = 0
ans = []
for i in inp:
if i == 'M':
cnt += 1
elif i == 'K':
if cnt==0:
ans.append(5)
else:
num = 5*(10**cnt)
ans.append(num)
cnt = 0
if cnt != 0:
for _ in range(cnt):
ans.append(1)
return ans
inp = input()
min_ans = get_min()
max_ans = get_max()
for i in max_ans:
print(i,end='')
print()
for i in min_ans:
print(i,end='')
설명
최댓값은 M은 만약 뒤에 K값이 있으면 그 K값과 묶어주는 것이 가장 크고, 만약 뒤에 M만 존재하면 M을 각각 하나씩 분리하는 것이 크다. 계속 K값이 나오지 않아서 for문을 나왔을 때도 cnt 값이 0이 아니면 M만 있는 것을 의미하기 때문에 cnt 개수만큼 1을 추가한다.
최솟값은 M은 뒤에 M이 나오면 K가 나오기 전까지 다 같이 묶어준다. K는 무조건 혼자 묶여야 한다. 여기서도 for문을 나왔을 때 cnt 값이 0이 아니면 10**(cnt-1)을 해준다.
반응형
'알고리즘 > 그리디' 카테고리의 다른 글
[백준][Python] 11000번 강의실 배정 (0) | 2022.04.12 |
---|---|
[백준][Python] 21758번 꿀 따기 (0) | 2022.04.11 |
[백준][Python] 16953번 A → B (0) | 2022.04.07 |
[백준][Python] 20365번 블로그2 (0) | 2022.04.06 |
[백준][Python] 1541번 잃어버린 괄호 (0) | 2022.04.05 |
댓글