Over the limit

카이사르 암호 함수 본문

Algorithm/Algorithm 풀이

카이사르 암호 함수

ellapk 2021. 9. 14. 01:22

1. 문제 풀이에 도움되는 함수 없이  (ord,chr 없이)

def encrypt(value, padding):
	s = "abcdefghijklmnopqrstuvwxyz"
	b = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	answer = ''
	for char in value :
		for j in range(len(s)):
			if char==s[j]:
				index=j+padding
				answer+=s[index%26]
			elif char==b[j]:
				index=j+padding
				answer+=b[index%26]
			else:
				answer+=''
	return answer
def decrypt(value, padding):
	s = "abcdefghijklmnopqrstuvwxyz"
	b = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	answer = ''
	for char in value :
		for j in range(len(s)):
			if char==s[j]:
				index=j-padding
				answer+=s[index%26]
			elif char==b[j]:
				index=j-padding
				answer+=b[index%26]
			else:
				answer+=''
	return answer

 

2. ord, chr 사용

def encrypt(value, padding):
	s = "abcdefghijklmnopqrstuvwxyz"
	b = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	answer = ''
	for char in value :
		if char in s:
			answer+=chr(((ord(char)-ord('a')+padding)%26)+ord('a'))
		elif char in b:
			answer+=chr(((ord(char)-ord('A')+padding)%26)+ord('A'))
		else:
			answer+=' '
	return answer
def decrypt(value, padding):
	s = "abcdefghijklmnopqrstuvwxyz"
	b = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	answer = ''
	for char in value :
		if char in s:
			answer+=chr(((ord(char)-ord('a')-padding)%26)+ord('a'))
		elif char in b:
			answer+=chr(((ord(char)-ord('A')-padding)%26)+ord('A'))
		else:
			answer+=' '
	return answer

 

3. 중복 코드 제거

def encrypt(value, padding):
	value=list(value)
	answer=''
	for i in range(len(value)) :
		if value[i].islower():
			answer+=chr((ord(value[i])-ord('a')+padding)%26+ord('a'))
		elif value[i].isupper():
			answer+=chr((ord(value[i])-ord('A')+padding)%26+ord('A'))
		else: answer+=' '
	return answer
def decrypt(value, padding):
	value=list(value)
	answer=''
	for i in range(len(value)) :
		if value[i].islower():
			answer+=chr((ord(value[i])-ord('a')-padding)%26+ord('a'))
		elif value[i].isupper():
			answer+=chr((ord(value[i])-ord('A')-padding)%26+ord('A'))
		else: answer+=' '
	return answer