๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐˜ผ๐™ก๐™œ๐™ค๐™ง๐™ž๐™ฉ๐™๐™ข/๐™‹๐™ง๐™ค๐™œ๐™ง๐™–๐™ข๐™ข๐™š๐™ง๐™จ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค '์‹œ์ € ์•”ํ˜ธ' ํŒŒ์ด์ฌ ํ’€์ด

by beomcoder 2023. 2. 19.
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
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€