백준 #31784 포닉스의 문단속
문제 링크
문제 설명
길이 N짜리 문자열을 정확하게 K번 돌려서 사전 순으로 가장 작은 것을 찾는 문제
코드
import sys
input = sys.stdin.readline
N, K = map(int, input().split())
arr = list(input().rstrip())
# 65 90
for i in range(N):
diff = 91 - ord(arr[i])
if i == N - 1:
if K:
tmp = ord(arr[i]) + (K % 26)
if tmp >= 91:
tmp -= 26
arr[i] = chr(tmp)
else:
if diff == 26:
continue
if diff <= K:
arr[i] = "A"
K -= diff
print("".join(arr))
풀이
문자열을 앞에서부터 돌려가면서 가장 사전순으로 앞서는 문자열을 찾았다. 마지막 문자열일 경우에는 남은 횟수를 다 써야하기 때문에 남은 횟수만큼 돌려주었다. 마지막 문자열이 아닐 경우에는 남은 횟수로 A를 만들 수 있으면 만들어주고 못만들 경우에는 그냥 넘겨주었다.
댓글남기기