https://school.programmers.co.kr/learn/courses/30/lessons/12926
0. Headers
#include <string>
using namespace std;
1. 알고리즘
- 시저 암호를 사용할 때 모든 string을 돌면서 확인하는데 공백이 있을 경우 계산하지 않고 넘김
string solution(string s, int n) {
string answer = "";
for (auto str : s)
if (str == ' ') { answer += ' '; continue; }
return answer;
}
- string에서 받아온 값들을 Int로 형 변환을 한 후 이동할 위치까지를 더함
- 만약 소문자인데 더한 값이 z보다 크다면 a부터 다시 시작해야하므로 알파벳의 개수를 빼서 확인
- 마찬가지로 대문자도 위의 방식처럼 하고 아무일이 일어나지 않을 경우 아무것도 하지 않음
- char to string을 하는 방법은 그냥 String 변수에 더해주면 됨
string solution(string s, int n) {
for (auto str : s)
{
int check = static_cast<char>(str) + n;
(str <= 'z' && check > 'z') ? check -= 26 : (str <='Z' && check > 'Z') ? check -=26 : 0;
answer += check;
}
return answer;
}
2. 완성 코드
#include <string>
using namespace std;
string solution(string s, int n) {
string answer = "";
for (auto str : s)
{
if (str == ' ') { answer += ' '; continue; }
int check = static_cast<char>(str) + n;
(str <= 'z' && check > 'z') ? check -= 26 : (str <='Z' && check > 'Z') ? check -=26 : 0;
answer += check;
}
return answer;
}
'C++ Algorithm & Study > C++ & Algorithm Strategies' 카테고리의 다른 글
[Programmers] 2016년 (0) | 2023.02.01 |
---|---|
[Programmers] 두 개 뽑아서 더하기 (0) | 2023.01.31 |
[Programmers] 기사단원의 무기 (0) | 2023.01.25 |
[Programmers] 멀리 뛰기 (0) | 2023.01.24 |
[Programmers] 행렬의 곱셈 (0) | 2023.01.23 |