μκ³ λ¦¬μ¦ π‘/νλ‘κ·Έλλ¨Έμ€
μ‘°μ΄μ€ν± Greedy
@ENFJ
2024. 9. 1. 16:53
name return
"JEROEN" 56
"JAN" 23
def solution(name):
# μ‘°μ΄μ€ν± μ‘°μ νμ
answer = 0
# κΈ°λ³Έ μ΅μ μ’μ°μ΄λ νμ : κΈΈμ΄ - 1
min_move = len(name) - 1
for i, char in enumerate(name): # enumerate() ν¨μ: enumerate()λ λ°λ³΅ν λ μΈλ±μ€μ κ°μ λμμ μ 곡νλ ν¨μμ
λλ€. enumerate(λ°λ³΅_λμ)μ (μΈλ±μ€, κ°) ννμ ννμ λ°νν©λλ€.
#μμΌλ‘ μ΄λνλ κ²½μ°
forward_move = ord(char) - ord('A')
#λ€λ‘ μ΄λνλ κ²½μ°
backward_move = ord('Z') - ord(char)+1
# ν΄λΉ μνλ²³ λ³κ²½ μ΅μκ° μΆκ°
answer += min( forward_move, backward_move )
# ν΄λΉ μνλ²³ λ€μλΆν° μ°μλ A λ¬Έμμ΄ μ°ΎκΈ°
while next < len(name) and name[next] == 'A':
next += 1
# κΈ°μ‘΄, μ°μλ Aμ μΌμͺ½μμ λ°©μ, μ°μλ Aμ μ€λ₯Έμͺ½μμ λ°©μ λΉκ΅ λ° κ°±μ
min_move = min([min_move, 2 *i + len(name) - next, i + 2 * (len(name) -next)])
# μνλ²³ λ³κ²½(μνμ΄λ) νμμ μ’μ°μ΄λ νμ μΆκ°
answer += min_move
return answer