반응형
#INFO
난이도 : BRONZE1
알고리즘 유형 : 자료구조
문제 출처 : https://www.acmicpc.net/problem/11655
#SOLVE
아스키 코드를 이용하는 간단한 문자열 문제이다. a(97) ~ m(109) 사이의 문자는 13을 더해도 (ROT13 문자열로 만들어도) 아스키의 범위를 벗어나지 않으니 그대로 출력하고 , n(110) ~ z(122) 사이의 문자는 13을 더하면 알파벳 아스키 범위를 벗어나니 13을 빼준다.
if (('a' <= str[i] && str[i] <= 'a' + 12) || ('A' <= str[i] && str[i] <= 'A' + 12)){
cout << (char)(str[i] + 13);
}
이는 대문자도 마찬가지이니, 똑같이 작성해 준다.
else if (('n' <= str[i] && str[i] <= 'n' + 12) || ('N' <= str[i] && str[i] <= 'N' + 12)){
cout << (char)(str[i] - 13);
}
나머지는 그냥 그대로 출력해 준다.
else {
cout << str[i];
}
#CODE
#include <iostream>
#include <string>
using namespace std;
int main()
{
//input
ios_base::sync_with_stdio(0);
cin.tie(0);
string str;
getline(cin, str);
//solve
for (int i = 0; i < str.length(); ++i) {
if (('a' <= str[i] && str[i] <= 'a' + 12) || ('A' <= str[i] && str[i] <= 'A' + 12)){
cout << (char)(str[i] + 13);
}
else if (('n' <= str[i] && str[i] <= 'n' + 12) || ('N' <= str[i] && str[i] <= 'N' + 12)){
cout << (char)(str[i] - 13);
}
else {
cout << str[i];
}
}
return 0;
}
반응형
'Archive > ProblemSolving' 카테고리의 다른 글
[BOJ] 11656 "접미사 배열" 문제 풀이 & 소스 코드 with C/C++ (0) | 2021.09.02 |
---|---|
[BOJ] 10824 "네 수" 문제 풀이 & 소스 코드 with C/C++ (0) | 2021.09.02 |
[BOJ] 10809 "알파벳 찾기" 문제 풀이 & 소스 코드 with C/C++ (0) | 2021.08.24 |
[BOJ] 10808 "알파벳 개수" 문제 풀이 & 소스 코드 with C/C++ (0) | 2021.08.24 |
[BOJ] 11053 "가장 긴 증가하는 부분 수열" 문제 풀이 & 소스 코드 with C/C++ (0) | 2021.08.18 |