https://www.acmicpc.net/problem/11655
입력으로 알파벳 대문자, 소문자, 공백, 숫자로 이루어진 문자열 S가 주어진다. 출력으로 알파벳에 해당하는 부분만 13글자씩 밀어서 만든다.
EX) a 1 -> n 1
공백, 숫자, 다른 문자열은 고대로 출력해야한다.
아스키코드를 이용하여 풀었는데
처음엔 굳이 필요없는 코드를 덧붙여서 코드가 지저분했다. 예를 들면
char(s[i] + 13)
, int(s[i])+13
이런..type을 변환하려는 시도들..모두 부질 없었다. 똑똑한 c++은 알아서 잘 변환해줬다.
아래는 정답 코드!
#include <iostream>
#include <algorithm>
#include<string>
using namespace std;
int n;
string s,ret;
int main() {
getline(cin, s);
for (int i = 0; i < s.length(); i++) {
if (s[i] >= 65 && s[i] <= 90) {
if (s[i] >= 78 && s[i] <= 90) s[i] = s[i] - 13;
else s[i] = s[i] + 13;
}
else if (s[i] >= 97 && s[i] <= 122) {
if (s[i] >= 110 && s[i] <= 122) s[i] = s[i] - 13;
else s[i] = s[i] + 13;
}
ret += s[i];
}
cout << ret;
}