위아래, 양옆으로 조이스틱 방향키에 따라 누르는 계산을 따로 해서 더해야 한다는 컨셉만 잡았고, 실패,,,ㅎㅎㅎ
알파벳 위치 구하는(위아래)것은 어렵지 않았는데,,도대체 양옆으로 이동하는것은🙃
나는 연속되는 A를 기준으로 왼쪽에서 시작했을때, 오른쪽에서 시작했을때의 이동 카운트를 세는것이 다른 사람들의 풀이를 보고도(한글을..보고도) 이해가 잘 되지 않았다ㅎ
def solution(name):
answer = 0
alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
alphare = 'ZYXWVUTSRQPONMLKJIHGFEDCBA'
tmp = []
cnt = 0
for i in name:
if int(alpha.find(i)) < int(alphare.find(i)):
cnt = int(alpha.find(i))+1
else :
cnt = int(alphare.find(i))+2
if abs(int(alpha.find(i)) - int(alphare.find(i))) == 1:
tmp.append(cnt)
print(sum(tmp)-1)
return answer
#def solution(name):
# answer = 0
# num_list = [min(abs(ord('A')-ord(n),abs(26-ord(n))) for n in name]
# min_move = len(name)-1
#
# for i,c in enumerate(name):
# next = i + 1
# while next < len(name) and name[next] == 'A':
# next +=1
# min_move = min(min_move, i*2 + len(name) - next ,(len(name)-next)*2+i) #
# return answer+min_move
def solution(name):
answer = 0
num_list = [min(abs(ord('A')-ord(n)),26-abs(ord('A')-ord(n))) for n in name]
answer += sum(num_list)
min_move = len(name) -1
tmp = []
for i,c in enumerate(name):
next_i = i+1
while next_i < len(name) and name[next_i] == 'A':
next_i +=1
# tmp.append(min_move)
# tmp.append(2*i + len(name) - next_i)
# tmp.append(2*(len(name)-next_i)+i)
# tmp.append('----')
min_move = min(min_move, 2*i + len(name) - next_i,2*(len(name)-next_i)+i)
print(tmp)
print(min_move)
print(answer)
return answer+min_move
참고.(이동 순서를 잘 표현해 주셨다 :))