성장기록지
백준 21314 민겸 수 (python) 본문
문제
풀이
같은 단어를 그리디를 통해 어떻게 최대값과 최소값을 구별하는지가 목표인 문제다.
나는 다음과 같이 설정하고 문제를 풀었다.
- 최댓값은 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='')
'알고리즘' 카테고리의 다른 글
백준 9934 완전 이진 트리 (python) (0) | 2025.01.16 |
---|---|
백준 14888) 연산자 끼워넣기 (python) (0) | 2024.12.26 |
파이썬) 힙과 우선순위 큐가 헷갈리는 사람들을 위한 정리! (0) | 2024.03.06 |