728x90
시저 암호
문제 설명
주어지는 문자열을 문자단위로 체크하여 대문자, 소문자, 공백인지 판단하고, 값을 n 만큼씩 밀어준다. 이 때 대문자나 소문자가 'Z' 또는 'z'를 넘어간다면 'A' 'a' 부터 새로 계산해준다.
문제 풀이
소스코드 : C++
#include<iostream>
#include <string>
#include <vector>
using namespace std;
int chk_alpha(char c){
if(c>='a'&&c<='z')return 0;
else if (c>='A'&& c<='Z')return 1;
else return -1;
}
string solution(string s, int n) {
for(int i=0; i<s.size(); i++){
char c = s[i];
if(chk_alpha(c) == -1)continue;
else if(chk_alpha(c)==0){
if(c+n>'z')s[i] = 'a'-1 + (s[i] + n -'z');
else s[i] +=n;
}
else if(chk_alpha(c==1)){
if(c+n>'Z')s[i] = 'A'-1 + (s[i] + n -'Z');
else s[i] +=n;
}
}
return s;
}
소스코드 : Python
def solution(s, n):
answer = ""
for c in s:
if c == " ":answer+=" "
else :
if c.isupper() :
if ord(c) + n > ord("Z") : answer += chr(ord("A")-1 - ord("Z") + ord(c) + n)
else: answer += chr(ord(c) + n)
elif c.islower() :
if ord(c) + n > ord("z") : answer += chr(ord("a")-1 - ord("z") + ord(c) + n)
else: answer += chr(ord(c) + n)
return answer
728x90
300x250