728x90
출처
https://www.acmicpc.net/problem/11655
내 풀이
더보기
더보기
#include<iostream>
#include<string>
using namespace std;
string input;
int main()
{
getline(cin, input);
for (int i = 0; i < input.length(); i++)
{
if (input[i] >= 'a' && input[i] <= 'z')
{
input[i] -= 'a';
input[i] += 13;
input[i] %= 26;
input[i] += 'a';
}
else if (input[i] >= 'A' && input[i] <= 'Z')
{
input[i] -= 'A';
input[i] += 13;
input[i] %= 26;
input[i] += 'A';
}
}
cout << input;
}
해설
ROT13은 알파벳을 13글자씩 밀어 암호화하는 방식으로,
- 소문자, 대문자를 각각 13글자 밀고
- 알파벳 범위를 넘어가면 처음으로 돌아오는 순환 구조를 가짐
띄어쓰기나 숫자, 특수문자는 그대로 출력해야 하므로,
- getline을 사용하여 띄어쓰기가 포함된 한 줄 전체를 입력 받음.
- 알파벳은 'a' 또는 'A'를 기준으로 0부터 인덱스를 맞추고,
- 13을 더한 뒤 26으로 나눠서 범위 조정 후, 다시 'a' 또는 'A'를 더해 원래 문자로 복원함.
느낀점
getline()을 활용하면 띄어쓰기가 포함된 문자열도 쉽게 받을 수 있음
'코딩테스트 공부 2025 Start > 1주차 (구현)' 카테고리의 다른 글
1620) 나는야 포켓몬 마스터 이다솜 (C++) (0) | 2025.04.10 |
---|---|
2559) 수열 (C++) (0) | 2025.04.09 |
9996) 한국이 그리울 땐 서버에 접속하지 (0) | 2025.04.05 |
1159) 농구 경기 (문자열) (0) | 2025.03.30 |
10988) 팰린드롬인지 확인하기 (reverse, 투포인터) (0) | 2025.03.30 |