Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 더현대서울 맛집
- ChatGPT
- PYTHON
- 편스토랑
- 백준
- 프로그래머스
- 맥북
- leetcode
- ubuntu
- Docker
- 코로나19
- gs25
- 금융문자분석경진대회
- Git
- programmers
- 캐치카페
- 프로그래머스 파이썬
- Kaggle
- 자연어처리
- 편스토랑 우승상품
- SW Expert Academy
- AI 경진대회
- 우분투
- 파이썬
- hackerrank
- dacon
- Real or Not? NLP with Disaster Tweets
- Baekjoon
- github
- 데이콘
Archives
- Today
- Total
솜씨좋은장씨
[BaekJoon] 5598번 : 카이사르 암호 (Python) 본문
728x90
반응형
코딩 1일 1문제! 오늘의 문제는 백준의 카이사르 암호 입니다.
Solution
def caesar_cipher(string):
answer = []
for char in string:
if ord(char) > ord('C'):
temp = chr(ord(char) - 3)
elif ord(char) < ord('D'):
temp = chr(ord('Z') - ord('C') + ord(char))
answer.append(temp)
return "".join(answer)
if __name__ == "__main__":
string = input()
print(caesar_cipher(string))
Solution 풀이
변환전 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
변환후 D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
이 문제의 카이사르 암호는 입력한 단어를 3문자씩 옮겨서 만드는 암호입니다.
문제는 카이사르 암호로 암호화 된 단어를 주면
해독하여 원래 단어를 출력하면 되는 문제입니다.
문제를 푸는데 주요하게 사용되는 것은
문자를 번호로 바꾸어주는 chr
숫자를 문자로 바꾸어주는 ord 입니다.
해독을 할때 에는 단어를 이루는 각 문자를 숫자로 바꾸고
여기서 -3을 한 뒤 다시 문자로 바꾸어 준 뒤
바꾼 값을 이어붙여보면 됩니다.
그런데 여기서 주의할 점은
D ~ Z 까지는 -3을 하여도 A ~ W 로 잘 변경이 되지만
chr(ord(char) - 3)
A ~ C 는 -3을 하게되면 제대로 바뀌지 않습니다.
A ~ C 는 X ~ Z 로 바뀌어야 하므로
Z - C - 입력 값 으로 바꾸어야합니다.
chr(ord('Z') - ord('C') + ord(char))
'Programming > 코딩 1일 1문제' 카테고리의 다른 글
[BaekJoon] 2755번 : 이번학기 평점은 몇점? (Python) (0) | 2021.08.22 |
---|---|
[BaekJoon] 14915번 : 진수 변환기 (Python) (0) | 2021.08.21 |
[BaekJoon] 12813번 : 이진수 연산 (Python) (0) | 2021.08.19 |
[BaekJoon] 6603번 : 로또 (Python) (0) | 2021.08.18 |
[BaekJoon] 1371번 : 가장 많은 글자 (Python) (0) | 2021.08.17 |
Comments