728x90
시저 암호
코딩테스트 연습 - 시저 암호
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 AB는 1만큼 밀면 BC가 되고, 3만큼 밀면 DE가 됩니다. z는 1만큼 밀면 a가
programmers.co.kr
문제 설명
주어지는 문자열을 문자단위로 체크하여 대문자, 소문자, 공백인지 판단하고, 값을 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