白俊答題21314民謙洙
7589 ワード
boj 21314:民謙洙
質問アドレス:https://www.acmicpc.net/problem/21314
難易度:silver 1
1.問題の説明民兼守が存在する. ルールは、民謙数が与えられたときに最大値、最小値を求めることです.
2.問題を解決する考え.最大値、最小値作成時ルックアップルール の最大値を作るには、まずMを最大化し、それからK、 を加えます.の最小値を作成するには、MとKは加算できません. 3.問題の処理方法ルールが見つかれば、実現は難しくありません. 5.コード実装
質問アドレス:https://www.acmicpc.net/problem/21314
難易度:silver 1
1.問題の説明
for n in num: #문자열의 문자 하나하나를 순회하며
if n == 'M': #문자가 M이면 카운트를 증가시킨다.(M이 나왔는지, 나왔으면 몇개나왔는지 기록위함)
cnt += 1
else: #K가 나왔을 때
if cnt > 0: #M이 한번이라도 나왔다면
min += str((10 ** cnt)+5) #최소값을 만들기 위해선 M따로 K따로 해서 15를 만들어야함
max += str(5 * (10 ** cnt)) #최대값을 만들기 위해선 M만큼 0을 붙히고 5를 곱해야함
else: #M이 안나왔으면 그냥 둘다 5로 처리해줌
min += '5'
max += '5'
cnt = 0
#마지막이 M으로 끝났을 때
if cnt > 0:
min += str(10 ** (cnt-1)) #최소값은 10, 100과 같이 끝내면됨
max += '1' * cnt #최대값은 11, 111과 같이 끝내면됨
4.特別注意事項num = input()
min, max = '', ''
cnt = 0
for n in num:
if n == 'M':
cnt += 1
else:
if cnt > 0:
min += str((10 ** cnt)+5)
max += str(5 * (10 ** cnt))
else:
min += '5'
max += '5'
cnt = 0
if cnt > 0:
min += str(10 ** (cnt-1))
max += '1' * cnt
print(max)
print(min)
Reference
この問題について(白俊答題21314民謙洙), 我々は、より多くの情報をここで見つけました https://velog.io/@qlql323/백준-문제풀이-21314-민겸수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol