본문 바로가기

알고리즘

알고리즘(시저 암호 암호화 복호화)

반응형

 

오늘 코딩테스트 보는데 시저 암호 문제가 나왔는데 풀지 못해서.. 다음에 비슷한 유형이 나오면 잊어버리지 말자ㅠ

복호화가 무슨 말인지 몰라서 사전을 찾아봤다.

 

사전

 

복호화 또는 디코딩(decoding)은 부호화(encoding)된 데이터를 부호(code)화 되기 전 형태로 바꾸어, 사람이 읽을 수 있는 형태로 되돌려놓는 것이다.
암호화(encryption)의 반대말로서의 복호화는 decryption이라고 부른다.
영어로는 decoding과 decryption이 구분되지만 한국어로는 구분이 되지 않는다.
암호화와 복호화에 같은 열쇠를 사용하는 것을 대칭 열쇠 암호(symmetric-key algorithm)라고 하고, 암호화와 복호화에 다른 열쇠를 사용하는 것을 공개 열쇠 암호(public-key cryptography) 또는 비대칭 열쇠 암호라고 한다.
대칭 키 암호는 암호화와 디코드가 빠르지만 다른 사람에게 암복호화에 쓰이는 열쇠를 안전하게 전달할 방법이 없고, 공개 키 암호는 다른 사람에게 암호화에 필요한 열쇠를 안전하게 전달할 수 있지만 암복호화에 시간이 오래 걸린다.
대칭 키 암호의 대표적인 게 AES이고, 공개 키 암호의 대표적인 게 RSA이다.

 

 

 

문제

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 AB는 1만큼 밀면 BC가 되고, 3만큼 밀면 DE가 됩니다. z는 1만큼 밀면 a가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.

 

 

 

제한사항

 

 

  • 공백은 아무리 밀어도 공백입니다.
  • s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
  • s의 길이는 8000이하입니다.
  • n은 1 이상, 25이하인 자연수입니다.

 

생각해보면 n만큼 뒤로 옮기기만 화면 되니까 .. 음 어렵지 않게 문제를 풀수 있을거라 생각했다.. 역시 생각은 생각일뿐 직접 코드를 짜보라고 하니.. 점점 산으로 가더라 진짜 코딩에 자질이 없나 싶을정도로 자괴감이 들었다 ㅜ 다시는 잊어버리지 않기를 나자신한테 약속한다ㅜ

 

아스키 코드 테이블을 일단 볼필요가 있을거 같다

아스키 코드가 z가 뒤에 보면 90 번부터 a가 아니라 특수문자로 가니까 이점들을 잡아줘야 한다  

일단 int 형과 char 형의 특징을 잘 이해해먄 풀수 있는 문제인거 같다 int형과 char 형은 서로 형변환이 가능한 타입인데 

직접적인 연산은 불가능 int + char 이게 안된다는 말인데 , 어떻게 풀어야 하나 하다가 한쪽으로 타입변환을 해주면 된다는 생각을

했지만 이미 시간은 5분 남음.... 

 

 문제를 풀어보자 

 

 

 

이문제도 구글링해서 알수 있었다.. ㅜ 알고리즘 은 공부해도 실력이.. 왜 그대로 일까 답답하네요 

반응형

'알고리즘' 카테고리의 다른 글

TopCoder 전체 탐색! (인싸를 찾아라!)  (0) 2020.11.22
TopCoder 전체 탐색! (회문)  (0) 2020.11.22
TopCoder 전체 탐색! (암호)  (0) 2020.11.12
TopCoder(전체탐색) 즐거운파티  (0) 2020.11.11
키위주스  (0) 2020.11.09