[C++][Baekjoon][λ¬Έμμ΄] 11655λ² ROT13
* λ¬Έμ
11655λ²: ROT13
첫째 μ€μ μνλ²³ λλ¬Έμ, μλ¬Έμ, 곡백, μ«μλ‘λ§ μ΄λ£¨μ΄μ§ λ¬Έμμ΄ Sκ° μ£Όμ΄μ§λ€. Sμ κΈΈμ΄λ 100μ λμ§ μλλ€.
www.acmicpc.net
μ£Όμ΄μ§ λ¬Έμμ΄μ ROT13 μΌλ‘ μνΈνν λ΄μ©μ μΆλ ₯νλ©΄ λλ λ¬Έμ μ΄λ€.
* λ¬Έμ νμ΄
ROT13μ μνλ²³μ 13κΈμμ© λ°μ΄μ λ§λλ―λ‘ ASCII μ½λλ‘ ννλ μνλ²³ μ«μμ 13μ λν΄μ λ€μ λ¬Έμμ΄λ‘ μΆλ ₯νλ©΄ λλ€.
μ΄ λ, z(Z) κ°μ΄ λμ΄κ° λλ λ€μ a(A) κ°λΆν° μΉ΄μ΄νΈν΄μ€μΌ νλ€. ROT13μ μνλ²³ κ°μμΈ 26μ μ νν λ°μ΄κΈ° λλ¬Έμ λ¨μν μνλ²³ + 13 κ°μμ 26μ λΉΌμ£Όλ©΄ λλ€.
* μμλ κ²
1) ASCII μ½λ
2) int to string
to_string(97);
3) int to char
μμμ , λͺ μμ λ³νμ΄ κ°λ₯ν¨.
μμμ λ³νμ κ·Έλ₯ char ch = 97; νλ©΄ λκ³
λͺ μμ λ³νμ (char)97; μ΄λ¬λ©΄ λλ€.
4) char to int
int a = (int)'a';
* μ½λ
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
const int SCREAT_NUM = 13;
const int ALPHABET_NUM = 26;
const int a = (int)'a';
const int z = (int)'z';
const int A = (int)'A';
const int Z = (int)'Z';
string str = "";
getline(cin, str);
for (int i = 0; i < str.size(); i++) {
//μλ¬Έμ
if (str[i] >= a && str[i] <= z) {
if (str[i] + SCREAT_NUM > z) {
str[i] = (str[i] + SCREAT_NUM) - ALPHABET_NUM;
}
else {
str[i] += SCREAT_NUM;
}
}
//λλ¬Έμ
if(str[i] >= A && str[i] <= Z){
if (str[i] + SCREAT_NUM > Z) {
str[i] = (str[i] + SCREAT_NUM) - ALPHABET_NUM;
}
else {
str[i] += SCREAT_NUM;
}
}
}
cout << str << "\n";
}