Algorithm
โ [BoJ][Python] 11655 ROT13
jihuSunbae
2024. 7. 25. 17:36
๋ชฉ์ฐจ
๐ซก Overview
์ฒด๊ฐ ๋์ด๋: โ โโโโ
์์์๊ฐ: 20๋ถ
๋ฌธ์ ๋ ๋ฒจ: ๊ณจ๋4 / ๋ฌธ์ ์ ํ: ๋จ์๊ตฌํ
ํ์ด ์ํ: ์ค์ค๋ก ํด๊ฒฐ
์ถํ: ๋ค์ ํ์ด๋ณด๊ธฐ
๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/11655
์๊ตฌ์ฌํญ ๋ถ์
๋ฌธ์ ๋ถ์
ROT13: ์์ด ์ํ๋ฒณ(๋๋ฌธ์, ์๋ฌธ์)๋ง 13๊ธ์ ๋ฐ์ด์ ๋ง๋ค๊ธฐ
์
๋ ฅ: ์ํ๋ฒณ ๋๋ฌธ์, ์๋ฌธ์, ๊ณต๋ฐฑ, ์ซ์๋ง ์ฃผ์ด์ง
S์ ๊ธธ์ด๋ 100 ์ดํ
"""์ฃ์ง ์ผ์ด์ค
- ๊ณต๋ฐฑ์ผ๋ก๋ง ์ด๋ค์ง ๋ฌธ์ฅ
- ์ซ์๋ก๋ง ์ด๋ค์ง ๋ฌธ์ฅ
- ๊ณต๋ฐฑ+์ซ์๋ก๋ง ์ด๋ค์ง ๋ฌธ์ฅ
- ์ํ๋ฒณ a,A,z,Z
- ๋ฌธ์์ ์ซ์๊ฐ ๋ถ์ด์๋ ๊ฒฝ์ฐ
"""
๋์ ์ฝ๋
- ์ํ๋ฒณ์์ 13์ ๋ํ์ ๋, ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ํต์ฌ
- ์๋ฅผ ๋ค์ด, Z(90)์์ 13์ ๊ฑด๋๋ฐ๋ฉด M(77)์ด ๋์ค๊ธธ ๋ฐ๋๋ค.
- ๊ทธ์น๋ง, ์์คํค ์ฝ๋ ์์์ Z(90)+13 = 103์ผ๋ก g์ ๋งค์นญ๋๋ค.
- ์๋ฅผ ๋ค์ด, Z(90)์์ 13์ ๊ฑด๋๋ฐ๋ฉด M(77)์ด ๋์ค๊ธธ ๋ฐ๋๋ค.
- ํด๊ฒฐ ๋ฐฉ์: A(65)~Z(90)์ A(0)~A(25)๋ก ๋งค์นญ๋๋ค๊ณ ์๊ฐํ๋ค.
0 1 2 .... 25
A(65) B C D E F G H I Z K L M N O P Q R S T U V W X Y Z(90)
- ์ฝ๋๋ก ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- ๋๋ฌธ์์ผ ๋ (ord ๊ฐ์ด 65~90)
- ๋จผ์ ์์ ํฌ์ธํธ 65๋ฅผ ๋นผ์ค์ 0~25์ ๋ฒ์๋ก ๋ณํํจ (ord(c) -65 + 13)%26 +65
- ์ดํ 13์ ๊ฑด๋ ๋ฐ์ด์ค (ord(c) -65 + 13)%26 +65
- ๊ทธ๋ฆฌ๊ณ A~Z ๋๋ฌธ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง ์๊ฒ ํ๊ธฐ ์ํด %26์ ์ฐ์ฐํด์ค๋ค. (ord(c) -65 + 13)%26 +65
- ์์ ๋ณต๊ท๋ฅผ ์ํด ๋ค์ 65๋ฅผ ๋ํด์ค (ord(c) -65 + 13)%26 +65
- ๋๋ฌธ์์ผ ๋ (ord ๊ฐ์ด 65~90)
if 65 <=ord(c) <= 90: # ๋๋ฌธ์์ ๊ฒฝ์ฐ 65~90
next_num = (ord(c) -65 + 13)%26 +65 # ๋ค์ ์ซ์ ๋ฒํธ
์ ์ฒด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
S = list(input())
for i, c in enumerate(S):
# ์ซ์๊ฑฐ๋ ๊ณต๋ฐฑ์ธ ๊ฒฝ์ฐ ์ ์ธ
if c.isdigit() or c == ' ': continue
# ์ํ๋ฒณ
next_num = 0
if 65 <=ord(c) <= 90: # ๋๋ฌธ์์ ๊ฒฝ์ฐ 65~90
next_num = (ord(c) -65 + 13)%26 +65 # ๋ค์ ์ซ์ ๋ฒํธ
elif 97 <=ord(c) <= 122: # ์๋ฌธ์์ ๊ฒฝ์ฐ 97~122
next_num = (ord(c) -97 + 13)%26 +97 # ๋ค์ ์ซ์ ๋ฒํธ
S[i] = chr(next_num)
print(''.join(S))
์ฐธ๊ณ ์ฝ๋
- ๋ค๋ฅธ ์ฝ๋๋ค์ 13์ ๋ํด๋ ๋ฒ์ด๋๋ ๋ฒ์/ ์๋ ๋ฒ์๋ก ๋๋ ์ ํผ ๊ฒ ๊ฐ๋ค!
- ๊ฐ์ด ์คํฐ๋ ํ์๋ ์๋ฏผ๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ๋ค!
# abcdefghijklm / nopqrstuvwxyz
S = input()
ans = []
for i, c in enumerate(S):
if 'a'<=c<='m' or 'A'<=c<='M':
ans.append(chr(ord(c)+13))
elif 'n'<=c<='z' or 'N'<=c<='Z':
ans.append(chr(ord(c)-13))
else:
ans.append(c)
print("".join(ans))
๋ฐฐ์ด ๊ฒ
- ์๊พธ ํท๊ฐ๋ฆฌ๋๋ฐ ์ธ์ฐ์.. ์ํ๋ฒณ์ 26๊ฐ..abcdefghijklmnopqrstuvwxyz
-
๋ ํผ๋ฐ์ค
- ....
#๋ฐฑ์ค #์ฝ๋ฉํ ์คํธ #์๊ณ ๋ฆฌ์ฆ #python #ํ์ด์ฌ