알고리즘
[프로그래머스] level 1 - 시저암호
u0jin
2020. 5. 16. 16:10
#include <string>
#include <vector>
using namespace std;
string solution(string s, int n) {
string answer = "";
for(int i=0;i<s.length();i++){
if(s[i] == ' '){
answer += " ";
}else{
for(int j=0;j<n;j++){
s[i] = s[i]+1;
if(s[i] > 'z'){
s[i] ='a';
}else if(s[i] >'Z' && s[i] <'a'){
s[i] ='A';
}
}
answer += s[i];
}
}
return answer;
}
알고리즘 )
그냥 하나씩 밀어주면서 범위를 계산해주면 된다고 판단함
1. 먼저 공백인 경우를 처리해준다.
2. 공백이 아닌경우를 놓고 알고리즘을 생각한다.
3. 먼저 증가되는 수는 입력받은 n만큼 이기 때문에 0부터 n까지를 for문으로 돌리도록 설정한다.
-> 원래의 문자에서 1을 증가했을경우를 두고 범위를 계산한다.
4. 소문자의 경우 1증가했을때 z 보다 커진다면 해당 문자열을 소문자 a 로 설정하고 돌리면 된다.
5. 대문자의 경우 1증가했을때 Z 보다 커진다면 해당 문자열을 대문자 A로 설정하고 돌리면 된다.
-> 대문자 Z 의 경우 소문자 z보다 아스키의 숫자가 작기 때문에 , 소문자 'a'보다 작을경우 를 꼭 추가하여 넣어주어야 한다.