[백준] 17828번 문자열 화폐

거북이·2023년 7월 5일
0

백준[골드5]

목록 보기
56/82
post-thumbnail

💡문제접근

  • 맨 앞부터 액면가가 높은 화폐부터 그대로 접근하게 된다면 문제에서 요구하는 사전 순으로 앞서는 문자열을 출력할 수 없다. 먼저 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원의 개수
    Z_cnt = X // 25
    # 최대한의 Z원의 개수를 구한 다음 발생하는 차액
    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

0개의 댓글