최대 1 분 소요

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

시저 암호.

카이사르 암호(Caesar cipher) 또는 시저 암호는 암호학에서 다루는 간단한 치환암호의 일종이다. 시저 암호는 암호화하고자 하는 내용을 알파벳 별로 거리(key)만큼 밀어서 다른 알파벳으로 치환하는 방식이다.

내 풀이

def solution(string, key) :
    answer = ""
    for alp in string :
        alp_ord = ord(alp) + key
        if alp.islower() :
            alp = chr(ord('a') + (alp_ord - ord('a')) % 26)
        elif alp.isupper() :
            alp = chr(ord('A') + (alp_ord - ord('A')) % 26)
            
		answer += alp
        
	return answer

풀이 설명

  • 주어진 string 안의 각 알파벳별로 아스키코드에 주어진 key만큼 더해 alp_ord에 저장한다.

  • 해당 알파벳 alp이 소문자일 경우

    • alp = ‘z’이고 key가 1이면 alp_ord = 123이 된다.

      123 - a(97) = 26이 되고 a(97) + (26) % 26 = a(97)이 된다.

  • 해당 알파벳 alp이 대문자일 경우

    • 소문자일 경우와 동일하다.

다른사람의 풀이

  • 거의 동일했고 리스트를 이용하면 answer += alp의 코드가 필요 없이 if문에서 바로 인덱싱을 해서 치환하면 코드가 더 깔끔해진다.

댓글남기기