해결방법
입력받은 문자열을 3칸씩 옆으로 밀어준다. 아스키 코드와 범위 기반 for 루프를 이용하여 문자열이 3칸씩 밀어주면 된다.
내 방식은 입력된 값들에서 A의 아스키 코드값을 빼고 3칸씩 밀기 위해 3을 더한 값을 26으로 나눈 나머지를 A에 더해서 해독하는 방식이었다.
예를 들어 입력된 문자열이 D라면 D의 아스키코드값 68 - 65 + 3은 6이 되고 26으로 나눈 나머지는 6이 되므로, 71이 되어서 아스키 코드값으로는 G로 변환이 이루어진다.
정답 코드
#include <iostream>
#include <string>
using namespace std;
string decode(const string& T)
{
string answer;
for (char c : T)
{
char push = (c - 'A' + 3) % 26 + 'A';
answer += push;
}
return answer;
}
int main()
{
string password;
cin >> password;
cout << decode(password) << endl;
return 0;
}
'코딩테스트' 카테고리의 다른 글
BOJ - 1440 타임머신 (0) | 2024.09.19 |
---|---|
BOJ - 2476 주사위 게임 (0) | 2024.09.17 |
BOJ - 2914 저작권 (0) | 2024.09.12 |
BOJ - 16466 콘서트 (1) | 2024.09.10 |
BOJ - 17388 와글와글 숭고한 (0) | 2024.09.10 |