반응형
https://www.acmicpc.net/problem/21314
MK일 경우 최소값은 15, 최대값은 50이 된다.
MMK일 경우 최소값은 105, 최대값은 500이 된다.
MKMM일 경우 최소값은 1510, 최대값은 5011이 된다.
이제 규칙을 알 수 있다.
▶ 최소값의 규칙 = K로 끝날 때마다 10 ** (K가 나오기 전 M의 개수) + 5 를 추가한다. M으로 끝날 때 10 ** (M의 개수 - 1) 를 추가한다.
▶ 최대값의 규칙 = K로 끝날 때마다 5 * (10 ** (K가 나오기 전 M의 개수)) 를 추가한다. M으로 끝날 때 M의 개수만큼 1을 추가한다.
num = input()
min, max = '', ''
m = 0 # K가 나오기 전 M의 개수
for n in num:
if n == 'M': # M일 경우 개수 증가
m += 1
else: # K일 경우 m의 값에 따른 최소, 최대를 구한다
if m > 0:
min += str(10 ** m + 5)
max += str(5 * (10 ** m))
else:
min += '5'
max += '5'
m = 0
# 마지막이 M으로 끝났을 경우 처리
if m > 0:
min += str(10 ** (m-1))
max += '1' * m
print(max)
print(min)
1. 민겸 수를 입력받고 필요한 변수를 생성한다.
2. 수를 탐색하면서 경우에 따른 처리를 해준다.
2-1. M일 경우 m += 1 하여 개수를 증가시킨다.
2-2. K일 경우 m > 0 라면 규칙에 따라 최소, 최대를 구하고 m = 0 라면 5를 추가한다. 그리고 m을 초기화한다.
3. 마지막이 M으로 끝났을 경우 위의 반복문에서 처리가 안됐으므로 처리를 해줘야 한다. 규칙에 따라 최소, 최대를 구해 추가한다.
4. 결과를 출력한다.
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준/Python] 이분 그래프 (0) | 2021.12.26 |
---|---|
[백준/Python] 감시 (0) | 2021.12.20 |
[백준/Python] 크게 만들기 (0) | 2021.12.06 |
[백준/Python] 병든 나이트 (0) | 2021.12.02 |
[백준/Python] 공유기 설치 (0) | 2021.11.29 |