ex) ์์ฑํด์ผ ํ๋ ์ด๋ฆ์ด ์ธ ๊ธ์๋ฉด AAA, ๋ค ๊ธ์๋ฉด AAAA
๐ผ : ๋ค์ ์ํ๋ฒณ
๐ฝ : ์ด์ ์ํ๋ฒณ(A์์ ์๋์ชฝ์ผ๋ก ์ด๋ํ๋ฉด Z๋ก)
โถ๏ธ : ์ปค์๋ฅผ ์ผ์ชฝ์ผ๋ก ์ด๋(์ฒซ ๋ฒ์งธ ์์น์์ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ฉด ๋ง์ง๋ง ๋ฌธ์์ ์ปค์)
โ๏ธ : ์ปค์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋(๋ง์ง๋ง ์์น์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ฉด ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ์ปค์)
1. ์ด๊ธฐ ํ ๋น ์งํ
def solution(name):
answer = 0
size = len(name)
min_move = size - 1
2. ์กฐ์ด์คํฑ์ ์กฐ์ํด ๊ธ์ ์ ๋ ฅ
for idx, char in enumerate(name):
answer += min(ord(char) - ord('A'), ord('Z') - ord(char) + 1)
next_idx = idx + 1
while next_idx < size and name[next_idx] == 'A': next_idx += 1
min_move = min([min_move, 2*idx + idx + size - next_idx, idx + 2 * (size - next_idx)])
3. ์ข/์ฐ๋ก ์์ง์ธ ํ์์ ์/ํ๋ก ์์ง์ธ ํ์๋ฅผ ํฉ์ณ์ ๋ฐํ
answer += min_move
return answer
def solution(name):
answer = 0
size = len(name)
min_move = size - 1
for idx, char in enumerate(name):
answer += min(ord(char) - ord('A'), ord('Z') - ord(char) + 1)
next_idx = idx + 1
while next_idx < size and name[next_idx] == 'A': next_idx += 1
min_move = min([min_move, 2*idx + idx + size - next_idx, idx + 2 * (size - next_idx)])
answer += min_move
return answer