:link:문제 링크

[31784 포닉스의 문단속]

:question:문제 설명

길이 N짜리 문자열을 정확하게 K번 돌려서 사전 순으로 가장 작은 것을 찾는 문제

:pencil2:코드

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))

:memo:풀이

문자열을 앞에서부터 돌려가면서 가장 사전순으로 앞서는 문자열을 찾았다. 마지막 문자열일 경우에는 남은 횟수를 다 써야하기 때문에 남은 횟수만큼 돌려주었다. 마지막 문자열이 아닐 경우에는 남은 횟수로 A를 만들 수 있으면 만들어주고 못만들 경우에는 그냥 넘겨주었다.

댓글남기기