이번엔 처음 풀어보는 투 스텝 문제이다

저 13자리 숫자에 매몰되어 있다가 각각 알파벳에 따른 26진수로 묶고 다시 26진수로 풀어서 내보내면 될 것이라고 생각을 했다
그래서 만든 코드는
#include <iostream>
#include <vector>
using namespace std;
int main() {
int T;
long long A, B;
int C;
string a(13, 'a');
string b = "";
cin >> T;
if (T == 1) {
cin >> A >> B;
long long Sum;
Sum = A + B;
int index = 0;
while (Sum > 0 && index < 13) {
int r = Sum % 26;
a[index] = char('a' + r);
Sum /= 26;
index++;
}
if (a.length() != 13) {
string as = "";
for (int i = 0; i < 13 - a.length(); i++) {
as += 'a';
}
a = as + a;
}
cout << a;
}
else if (T == 2) {
cin >> b;
int count = 0;
while (count < b.size() && b[count] == 'a') {
count++;
}
if (count == 13) {
cout << "0";
return 0;
}
string as = b.substr(count);
long long result = 0;
long long mul = 1;
for (int i = 0; i < 13; i++) {
int dig = b[i] - 'a';
result += dig * mul;
mul *= 26;
}
cout << result;
}
}
우선 a가 13개 들어있는 string문을 만든다
우선 T == 1일 때 A, B를 받은 후 Sum을 구한다
그리고 앞자리부터 변환해서 남은 뒷자리가 a인 26진수를 만들어서 보관해놓는다
풀다가 수정한게 남아서 13이 아닐 경우가 남아있는데 어차피 절대 못 이뤄질 조건문이라 패스해도 무방할듯
그래서 a를 전체 출력한 후 다시 T가 2일 때
b를 입력받을 시
일단 전체 다 a일 때는 무조건 0을 출력하고 끝내버린다
count는 뒷자리 a를 싹 뺄 목적으로 계산한 변수이다
그래서 깔끔히 정리된 as를 가공하는 과정으로 진행이 될 것이다
우선 결과를 넣을 result랑 변환에 핵심이 되는 mul을 지정한 후
result에 첫 자리부터 mul * 변환 숫자값을 한 후
mul에 26을 곱해 다시 더하는 방식으로 26진수를 해체한다
그렇게 되면 결과값을 뽑아낼 수 있다
잘 읽으면 풀기 그렇게 어렵지는 않았던거 같다