알고리즘

[프로그래머스] 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'보다 작을경우 를 꼭 추가하여 넣어주어야 한다.