Written by
최태열
on
on
[Python][프로그래머스][Level2] 조이스틱
[Python][프로그래머스][Level2] 조이스틱
코드
def solution(name):
answer = 0
alpha=dict()
for num in range(ord('A'),ord('Z')+1):
alpha[chr(num)]=num-65
for n in name:
answer+=min(alpha[n]-alpha['A'],26-alpha[n])
check=[]
for idx,n in enumerate(name):
if n!='A':
check.append(idx)
cnt=ans=0
while check:
if cnt in check:
check.remove(cnt)
check.sort(key=lambda x: (min(abs(cnt-x),len(name)-abs(cnt-x)),x),reverse=True)
ans+=min(abs(cnt-check[-1]),len(name)-abs(cnt-check[-1]))
cnt=check.pop()
return answer+ans
배열의 각 인덱스 마다 A로 만들때 필요한 조작횟수를 저장한다.
그리고 첫번째 위치부터 A가 아닌 위치중에 가장 가까운 곳을 골라서
이동하는 방식으로 풀었다.
Discussion and feedback