기록장
TODAY TOTAL
[BOJ] 11655번 : ROT13

https://www.acmicpc.net/problem/11655


 

 생각

char + 13을 해주면 되는 아주 간단한 문제같지만 아스키 코드는 알파벳만 있는게 아니라는 점..

z를 넘어갔을때 다시 a로 돌아와서 넘기는 것이 포인트인 문제라고 생각

 

 구현 

아스키 코드 M(77)을 기준으로 +13하면 Z,  -13하면 A여서 M(m)을 기준으로 +할지 -할지를 정해줬다. 

isdigit()으로 문자인지 구분하고, 띄어쓰기도 아스키코드로 변환이 되기때문에 if문에서 걸러준다.


 구현 코드 

#include<bits/stdc++.h>

using namespace std;

int main()
{
	 string str;
	 getline(cin,str);

	 for (int i = 0; i < str.size(); i++)
	 {
			if (isdigit(str[i])==0 && str[i] != ' ')
			{
				 if (str[i] <= 'Z') // 대문자
				 {
						if ('M' < str[i])
							 str[i] -= 13;
						else
							 str[i] += 13;
				 }
				 else // 소문자
				 {
						if ('m' < str[i])
							 str[i] -= 13;
						else
							 str[i] += 13;
				 }
			}
	 }
	 cout << str;
}

 

 

 

 리뷰 

  Comments