문제 요약
이 문제는 투 스텝 문제로, 한 번 채점할 때 프로그램을 2번 실행하는 형식입니다. 두 번의 실행은 서로 독립적입니다.
첫 번째 실행에서는 음 아닌 정수 A, B가 주어지며, 소문자 알파벳으로 구성된 길이가 13인 문자열을 출력해야 합니다.
두 번째 실행에서는 첫 번째 실행에서 출력한 문자열만 주어지며, A+B의 값을 출력해야 합니다.
해설
소문자 알파벳으로 구성된 길이가 13인 문자열만으로 두 정수의 합을 나타내야 하므로, 결국 문자열과 숫자를 서로 변환하는 문제를 풀어야 하는 것과 같습니다.
소문자 알파벳은 26가지밖에 없는데, 13개를 쓴다면 $2\times 10^{18}$보다 작거나 같은 음 아닌 정수를 모두 표현할 수 있을까요? 다행히 $26^{13}$은 2,481,152,873,203,736,576이므로 제한 범위를 지킬 수 있습니다.
따라서, 이 문제를 푸는 방법은 다음과 같이 정리할 수 있습니다:
- A+B를 첫 번째 실행에서 계산한 뒤 이를 26진법으로 바꿔 a~z에 매핑합니다.
- 두 번째 실행에서는 매핑된 문자열을 반대로 숫자로 바꾸어 출력하면 됩니다.
'Computer Science > Competitive Programming' 카테고리의 다른 글
| [백준] 1011 (Fly me to the Alpha Centauri) (0) | 2025.11.20 |
|---|---|
| [백준] 5525 (IOIOI) (0) | 2025.11.20 |
| [백준] 1193 (분수찾기) (0) | 2025.11.20 |
| [백준] 2869 (달팽이는 올라가고 싶다) (0) | 2025.11.20 |