전체 글 72

[python] 카이사르 암호화(Caesar cipher) 알고리즘

카이사르 암호화란 고대 로마의 카이사르가 사용했다고 알려졌다. 평문에 있는 문자가 알파벳의 N번째 문자라면, 이것을 N+K 번째 문자로 교체하는 원리 예를 들어 K = 1 이라고 한다면, A -> B 가 되고, B -> C가 되는 원리 예를들어 'APPLE BANANA' 라는 문장이 있고 k = 1 이라면 암호문은 'BQQMFACBOBOB' 가 될 것이다. * 여기 암호문에서의 A는 빈칸을 의미한다. 이유는 A~Z 중 A앞에 공백부터 시작한다고 생각하면 쉽다. (빈칸) A B C ... X Y Z def encipher(p, k): c = '' for i in range(len(p)): a = ord(p[i]) if a == 32: a = 64 t = a + k if t > 90: t -= 27 if t..

algorithm 2020.11.04

[python] 보이어 무어 알고리즘 (Boyer Moore Algorithm)

보이어 무어 알고리즘은 텍스트에서 특정한 패턴(텍스트)을 탐색하는 알고리즘입니다. 또한 오른쪽에서 왼쪽으로 스트링 탐색을 진행합니다. 예를 들어 텍스트 STRING STARTING CONSISTING에 대하여 패턴 STING을 탐색하는 수행과정을 본다면 먼저 STING이라는 패턴에 대한 skip 배열을 구하여야 합니다. * STING 일 때의 skip 배열 G N I T S 다른 모든 문자 0 1 2 3 4 5 위와 같은 skip 배열의 숫자는 만약 텍스트가 일치하지 않을 경우 얼마만큼 건너뛰어야 하는지 표시한 것입니다. * 오른쪽에서 왼쪽으로 탐색을 진행하기 대문에 먼저 N과 G를 비교해보면, 서로 다른 문자임을 알 수 있습니다 위에 N 이란 단어는 skip 배열에서 1이란 숫자를 표시하고 있으므로 한..

algorithm 2020.10.27