[프로그래머스/C++]Lv.1 - 시저 암호

YH J·2023년 6월 6일
0

프로그래머스

목록 보기
117/168

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12926

내 풀이

대문자인지 소문자인지 체크, 대문자면 n을 더했을 때 오버가 되는지 체크해서 처리
소문자도 더했을 때 오버가 되는지 체크해서 처리

내 코드

#include <string>
#include <vector>

using namespace std;

string solution(string s, int n) {
    for(int i = 0; i < s.length(); i++)
    {
        if(s[i] >= 'A' && s[i] <= 'Z')
        {
            if(s[i] + n > 'Z')
                s[i] += (n - ('Z' - 'A' + 1 ));
            else
                s[i] += n;
        }
        else if(s[i] >= 'a' && s[i] <='z')
        {
            if(s[i] + n > 'z')
                s[i] += (n - ('z' - 'a' + 1));
            else
                s[i]+= n;
        }
    }
    return s;
}

다른 사람의 풀이

#include <string>
#include <vector>

using namespace std;

string solution(string s, int n) {
    string answer = "";

    for(auto &a: s) {
        if(islower(a)) {
            if(!islower(a+=n%26))
                a-=26;
        } else if(isupper(a)) {
            if(!isupper(a+=n%26))
                a-=26;
        }
    }
    return s;
}

다른 사람의 풀이 해석

islower과 isupper함수를 사용하였다.

profile
게임 개발자 지망생

0개의 댓글