728x90
๋ฐ์ํ
๐กsolutions )
๐ฌ ๋ก์ง ํฌ๊ฒ ๋ ๊ฐ์ง => ์ํ๋ก ์ต์ ๊ฑฐ๋ฆฌ ๊ตฌํด์ ์ํ๋ฒณ ๋ฐ๊พธ๊ธฐ / ์ข์ฐ๋ก ์ต์ ๊ฑฐ๋ฆฌ ๊ตฌํด์ ๋ฐฉํฅ ์ ํ ํ ์ด๋ํ๊ธฐ
๐ฌ change ๋ฐฐ์ด์๋ ๊ฐ ์ํ๋ฒณ๋ง๋ค ์ํ ์กฐ์ ์ค min๊ฐ์ผ๋ก ์ต์ ํ์๋ฅผ ๋ด์๋๊ธฐ
๐ฌ idx 0๋ฒ ๋ถํฐ ์์ํด์ ์ข์ฐ ์ด๋ ํ์๋ฅผ answer์ ๋ํด์ฃผ๊ธฐ
๐ฌ ์ข์ฐ ๋ฐฉํฅ ์ ํ ์์๋ ๋ฐ๊ฟ์ผํ๋ ์ํ๋ฒณ์ด ๋์ค๊ธฐ๊น์ง์ ์ข์ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๊ณ , ๊ทธ ์ค ์ต์๊ฐ์ด ๋๋ ๋ฐฉํฅ์ผ๋ก ์ ํํ๋ค.
๐ฌ ๋ชจ๋ ์ํ๋ฒณ์ด ์กฐ์ ๋ ๊ฒฝ์ฐ(change์ sum์ด 0์ผ ๋) -> ๊ฒฐ๊ณผ๊ฐ ๋ฐํ
๐ซcode )
def solution(name):
# ์ํ ์กฐ์ ์ผ๋ก ์ํ๋ฒณ ๋ฐ๊พธ๊ธฐ
change = [min(ord(i) - ord('A'), ord('Z') - ord(i) + 1) for i in name]
idx = 0
answer = 0
while True:
answer += change[idx]
change[idx] = 0
if sum(change) == 0:
return answer
# ์ข์ฐ ์ด๋ํฅ๋ฐฉ์ ์ ํ๊ธฐ
left, right = 1, 1
while change[idx - left] == 0:
left += 1
while change[idx + right] == 0:
right += 1
# ์์น(์ธ๋ฑ์ค) ์กฐ์
answer += left if left < right else right
idx += -left if left < right else right
๐ description )
๋ฌธ์ ์ถ์ฒ : programmers.co.kr/learn/courses/30/lessons/42860?language=python3
๋ฌธ์ ์ค๋ช
์กฐ์ด์คํฑ์ผ๋ก ์ํ๋ฒณ ์ด๋ฆ์ ์์ฑํ์ธ์. ๋งจ ์ฒ์์ A๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ex) ์์ฑํด์ผ ํ๋ ์ด๋ฆ์ด ์ธ ๊ธ์๋ฉด AAA, ๋ค ๊ธ์๋ฉด AAAA ์กฐ์ด์คํฑ์ ๊ฐ ๋ฐฉํฅ์ผ๋ก ์์ง์ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋์ ๋ฐฉ๋ฒ์ผ๋ก JAZ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๋ง๋ค๊ณ ์ ํ๋ ์ด๋ฆ name์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ด๋ฆ์ ๋ํด ์กฐ์ด์คํฑ ์กฐ์ ํ์์ ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ๋ง๋์ธ์. ์ ํ ์ฌํญ name์ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. name์ ๊ธธ์ด๋ 1 ์ด์ 20 ์ดํ์ ๋๋ค. ์ ์ถ๋ ฅ ์ โป ๊ณต์ง - 2019๋ 2์ 28์ผ ํ ์คํธ์ผ์ด์ค๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. |
๋ฐ์ํ