💡문제접근
- 맨 앞부터 액면가가 높은 화폐부터 그대로 접근하게 된다면 문제에서 요구하는 사전 순으로 앞서는 문자열을 출력할 수 없다. 먼저 1원의 가치를 가지는 A를 문자열의 길이 N만큼 만들고 그 다음 맨 뒤에서부터 Z가 들어갈 수 있는 개수를 구해 Z를 채워 넣고 발생하는 차익은 차익에 해당하는 문자열 화폐를 등록하면 된다.
💡코드(메모리 : 118120KB, 시간 : 908ms)
import sys
input = sys.stdin.readline
N, X = map(int, input().strip().split())
String = ['A'] * N
if N > X or 26 * N < X:
print("!")
sys.exit(0)
else:
X -= N
Z_cnt = X // 25
remain = X % 25
pointer = N - 1
for i in range(N-1, N-Z_cnt-1, -1):
String[i] = 'Z'
pointer -= 1
if remain > 0:
String[pointer] = chr(remain + 65)
print(''.join(map(str, String)))
💡소요시간 : 47m