728x90
๋ฐ์ํ
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
"""
์ด๋ค ๋ฌธ์ฅ์ ๊ฐ ์ํ๋ฒณ์ ์ผ์ ํ ๊ฑฐ๋ฆฌ๋งํผ ๋ฐ์ด์ ๋ค๋ฅธ ์ํ๋ฒณ์ผ๋ก
๋ฐ๊พธ๋ ์ํธํ ๋ฐฉ์์ ์์ ์ํธ๋ผ๊ณ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด "AB"๋ 1๋งํผ ๋ฐ๋ฉด "BC"๊ฐ ๋๊ณ , 3๋งํผ ๋ฐ๋ฉด "DE"๊ฐ ๋ฉ๋๋ค.
"z"๋ 1๋งํผ ๋ฐ๋ฉด "a"๊ฐ ๋ฉ๋๋ค. ๋ฌธ์์ด s์ ๊ฑฐ๋ฆฌ n์ ์
๋ ฅ๋ฐ์
s๋ฅผ n๋งํผ ๋ฏผ ์ํธ๋ฌธ์ ๋ง๋๋ ํจ์, solution์ ์์ฑํด ๋ณด์ธ์.
"""
from collections import deque
def solution(s, n):
big = deque([chr(i) for i in range(ord('A'), ord('Z')+1)])
small = deque([chr(i) for i in range(ord('a'), ord('z')+1)])
big.rotate(-n)
small.rotate(-n)
answer = ''
for w in s:
if 'a' <= w <= 'z':
answer += small[ord(w)-ord('a')]
elif 'A' <= w <= 'Z':
answer += big[ord(w)-ord('A')]
else:
answer += w
return answer
"""
๋ฏผ๋ค๊ณ ํด์ deque์ rotate๊ฐ ์๊ฐ๋ฌ๋ค.
๋จผ์ ๋๋ฌธ์์ ์๋ฌธ์๋ฅผ ๋ฆฌ์คํธ๋ก ๋ง๋ค์ด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ rotate๋ก n๋งํผ ๋๋ ค์ฃผ์๋ค.
+n์ ์ค๋ฅธ์ชฝ์ผ๋ก -n์ ์ผ์ชฝ์ผ๋ก ๋๋ฆฌ๋ ๊ฒ์ด๋ค.
๋ฌธ์ฅ์ ์ฐจ๋ก๋๋ก ์ฝ์ด์ ์๋ฌธ์์ ๋๋ฌธ์์ผ๋๋ ๋ฆฌ์คํธ์์ ๋งค์นญ์์ผฐ๊ณ
์๋๋ผ๋ฉด ๊ทธ๋๋ก answer์ ๋ฃ์๋ค.
[chr(i) for i in range(ord('A'), ord('Z')+1)]๋ฅผ ํด์ํ๋ฉด
chr์ ํด๋น์ซ์๋ฅผ ๋ฌธ์๋ก ๋งค์นญ์ํค๋๊ฒ์ด๋ค.
์์คํค์ฝ๋ํ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋๋๋ฐ 95 = 'a'๊ฐ ๋๋ค.
ord๋ chr์ ๋ฐ๋์ธ๋ฐ 'a' = 95๊ฐ ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ord('A'), ord('Z')+1์ 65, 91์ด ๋๋ค.
answer += small[ord(w)-ord('a')] ์ด๋ถ๋ถ์ ๋ฆฌ์คํธ์ ๋งค์นญ์ํค๊ธฐ ์ํจ์ด๋ค.
ord(w)๋ s๋ฌธ์ฅ์์ ๋์จ ํ๊ธ์๋ฅผ ์ซ์๋ก ๋ฐ๊พผ๋ค.
if๋ฌธ์์ ์๋ฌธ์์์ ํ์ธํ๊ธฐ ๋๋ฌธ์ ord('a')๋ฅผ ๋นผ์ฃผ๋ฉด ์ธ๋ฑ์ค๊ฐ์ด ๋์จ๋ค.
์๋ฅผ ๋ค์ด w๊ฐ 'a'๋ผ๋ฉด 95-95๋ฅผ ํ์ฌ 0์ด ๋๋ค.
๊ทธ๋ผ ์๋ 'a'๋ small list์ 0๋ฒ์งธ ์์น์ ์์๊ธฐ ๋๋ฌธ์ ๋งค์นญ์ด ๋๋ค.
"""
728x90
๋ฐ์ํ
๋๊ธ