알고리즘/프로그래머스

[C++] 프로그래머스 : 시저 암호

0802ojw 2024. 2. 22. 19:37

출처: 프로그래머스 코딩테스트 연습 ,https://school.programmers.co.kr/learn/courses/30/lessons/12926#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


[문제풀이]
아스키 코드를 이용해서 n을 더해서 문자열을 미뤄주면된다.

단 'z'와 'Z'를 초과하는 경우를 분류해서 26을 빼주어야 한다.

공백문자 ' '에 대한 처리도 필요하다.

#include <string>
#include <vector>

using namespace std;

char Change(char x , int n){
    if ( x == ' '){
        return ' ';
    }
    if ('a' <= x && x <= 'z' && x + n > 'z'){
        return x + n - 26;
    }
    if ('A' <= x && x <= 'Z' && x + n > 'Z'){
        return x + n - 26;
    }
    
    return x + n ;

}

string solution(string s, int n) {
    string answer = "";
    for (char x : s){
        answer += Change(x, n);
    }    
    return answer;
}