반응형
문자열을 지정받아 아스키 코드를 활용하면 된다.
char a = s[i];
형식으로 지정하는 경우 아스키코드값을 넘어가게 되면 문자열이 깨지기 때문에
int로 정의해 마지막에 char로 바꿔주는 첫번째와 같은 방법은 정답이 될 수 있지만 두 번째의 경우 정답이 될 수 없다.
정답이 되는 경우
#include <bits/stdc++.h>
using namespace std;
// A = 65 , Z = 90, a = 97 , z = 122
string s; // 주어지는 문자열
string rot13;
int bigA = 'A', bigZ = 'Z', smallA = 'a', smallZ = 'z';
int main() {
getline(cin, s);
for(int i=0; i<s.length(); i++) {
int a = s[i];
if(a >= bigA && a <= bigZ) { // 대문자인 경우
a += 13;
if(a > bigZ) {
a -= 26;
}
}else if(a>=smallA && a<=smallZ) { // 소문자인 경우
a += 13;
if(a > smallZ) {
a -= 26;
}
}
cout << (char)a;
}
return 0;
}
/*
char a 형식으로 지정한 경우
숫자가 아스키코드 값을 넘어가게 되면 깨지는 현상이 발생한다.
*/
정답이 안되는 경우
#include <bits/stdc++.h>
using namespace std;
// A = 65 , Z = 90, a = 97 , z = 122
string s; // 주어지는 문자열
string rot13;
int bigA = 'A', bigZ = 'Z', smallA = 'a', smallZ = 'z';
int main() {
getline(cin, s);
for(int i=0; i<s.length(); i++) {
char a = s[i];
if(a >= bigA && a <= bigZ) { // 대문자인 경우
a += 13;
if(a > bigZ) {
a -= 26;
}
}else if(a>=smallA && a<=smallZ) { // 소문자인 경우
a += 13;
if(a > smallZ) {
a -= 26;
}
}
cout << a;
}
return 0;
}
/*
char a 형식으로 지정한 경우
숫자가 아스키코드 값을 넘어가게 되면 깨지는 현상이 발생한다.
*/
반응형
'코테 > 문제풀이' 카테고리의 다른 글
113. Path Sum II 정답 및 문제풀이 C++ (0) | 2023.03.18 |
---|---|
백준 13305 주유소 문제 c++ (0) | 2023.02.28 |
백준 1068 트리 - dfs 이용한 트리 순회 (0) | 2023.02.14 |
프로그래머스 순위 문제 (0) | 2023.02.12 |
[알고리즘] 백준 1629 곱셈 힌트 및 정답 (0) | 2023.01.23 |