백준 알고리즘(C++)
백준 11655번 ROT13(C++)
coding232624
2023. 12. 13. 17:09
문제
https://www.acmicpc.net/problem/11655
11655번: ROT13
첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다.
www.acmicpc.net
해설
알파벳이 26개인것을 인지하고 문제를 보면 "문장" -> "암호화1번한 문장" -> "다시한번 암호화 한 문장(2번암호화)"라는 조건을 통해 뭔가 1대1대응이 되는 규칙이 있다는 것을 파악 한 후 아스키 코드상에서 13을 더한 값과 대칭되는 것을 파악
그 후 알파벳에 해당하는 아스키 코드 값에서는 13만큼 더한 값을 ret(결과)에 저장
그 외에는 그대로 ret에 저장
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <bits/stdc++.h>
using namespace std;
string S,ret;
int main(){
getline(cin,S);
for(int i = 0; i < S.size(); i++){
if(65<= S[i] && S[i]<=77)
ret += S[i] + 13;
else if(78<= S[i] && S[i] <=90)
ret += S[i] - 13;
else if(97<= S[i] && S[i]<= 109)
ret += S[i] + 13;
else if(110<= S[i] && S[i]<=122)
ret += S[i] - 13;
else
ret += S[i];
}
cout << ret;
return 0;
}
|
cs |