BOJ 문제 링크: https://www.acmicpc.net/problem/17828

 

17828번: 문자열 화폐

첫 번째 줄에 문자열의 길이 N(1 ≤ N ≤ 5,000,000)과, 문자열의 가치를 나타내는 정수 X(1 ≤ X ≤ 500,000,000)가 공백으로 구분되어 주어진다.

www.acmicpc.net

각 알파벳 A, B, C, . . ., Z 순서대로 1, 2, 3, . . ., 26만큼의 화폐가치가 있다.

길이가 N인 알파벳을 나열한 문자열을 만들어서 각 문자의 화폐가치의 합이 X인 문자열 화폐를 만들려한다.

주어진 조건을 충족하면서 사전순으로 가장 빠른 문자열을 출력하자.

 

문자열이 사전순으로 가장 앞서려면 A를 앞쪽에 최대한 많이 나열하면 된다는것을 직관적으로 알수 있다.

그러기 위해서는 Z를 뒤로 최대한 많이 배치해서 주어진 화폐가치를 최대한 채우고, 남은 자리는 A로 채운다.

이때, A와 Z사이에 남은 화폐가치를 채우기 위한 가치가 2~25사이인 문자가 하나 올 수 있다.

 

코드 원본: https://github.com/sbl133/BOJ/blob/main/%2317828.cpp

 

GitHub - sbl133/BOJ

Contribute to sbl133/BOJ development by creating an account on GitHub.

github.com

댓글을 통한 코드리뷰, 질문, 지적 언제든 환영입니다!

+ Recent posts