Coding - Algo/python
[프로그래머스] 조이스틱 (python 파이썬)
jainn
2021. 6. 8. 23:51
728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/42860
풀이 및 소스코드
def solution(name):
answer = 0
name = list(name)
base = ["A"]*len(name)
idx = 0
while 1:
r = 1
l = 1
if name[idx]!="A":
answer += min(ord("Z")-ord(name[idx])+1, ord(name[idx])-ord("A"))
# Z부터 세는 경우가 더 작을 경우, A에서 Z로 가기 위한 조작 횟수가 1번 존재하기 때문에 1을 더해서 넣어줍니다.
name[idx] = "A"
if name == base:
break
else: #A가 아닌 가장 가까운 곳으로 이동. 왼쪽 혹은 오른쪽으로.
for i in range(1, len(name)):
if name[idx+i] == "A":
r += 1
else:
break
if name[idx-i] == "A":
l += 1
else:
break
if r>l:
answer += l
idx -=l
else:
answer += r
idx += r
return answer
반응형