[백준 c++] 11655 ROT13

jw·2022년 2월 4일
0

백준

목록 보기
6/141
post-thumbnail

문제 설명

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;
}
profile
다시태어나고싶어요

0개의 댓글