[Programmers] 시저 암호

yunan·2020년 9월 7일
0

✍️ 시저 암호 문제

🔦 문제 링크

  • 문자열이 특정 범위를 순환
  • 문자열문자의 변환이 중요!

🛠 version1 (python)


def solution(s, n):
    answer = []
    print(ord('a'),ord('A'),ord('z'),ord('Z'))
    for i in s:
        print(i)
        print( ord(i) )
        if ord('a') <= ord(i) <= ord('z'):
            print("aa"+ chr( (ord(i)+n-ord('a'))%26 + ord('a') ) )
            answer += chr( (ord(i)+n-ord('a'))%26 + ord('a') )        
        elif ord('A') <= ord(i) <= ord('Z'):
            print("bb"+ chr( (ord(i)+n-ord('A'))%26 + ord('A') ) )
            answer +=  chr( (ord(i)+n-ord('A'))%26 + ord('A') )
        else :
            answer += ' '
                
    return ''.join(answer)

🛠 version2 (python)

def solution(s, n):
    # string -> 즉 s 에 할당은 불가능하다.
    answer = list(s)
    for i in range(len(s)):
        if answer[i].isupper():
            answer[i] = chr( (ord(answer[i])+n-ord('A'))%26 + ord('A'))
        elif answer[i].islower():
            answer[i] = chr( (ord(answer[i])+n-ord('a'))%26 + ord('a'))
        print(answer)
    return ''.join(answer)
    

🛠 version (C++)


#include <string>
#include <vector>
#include <iostream>
using namespace std;

string solution(string s, int n) {
    string answer = "";
    char start=' ';
    for(int i=0; i<s.length(); i++)
    {
        //char ch = s[i];
        if('A' <= s[i] && s[i] <= 'Z')
            start = 'A';
        else if('a' <= s[i] && s[i] <= 'z')
            start = 'a';
        if(s[i]!=' ')
            s[i] = (s[i]+n-start)%26 + start;
        cout << s[i] << "\n";
    }   
    return s;
}
profile
Go Go

0개의 댓글