-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path[프로그래머스] 김두연_조이스틱.py
41 lines (39 loc) · 1.15 KB
/
[프로그래머스] 김두연_조이스틱.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
def solution(name):
idx = 0
answer = 0
_name = list(name)
while True:
answer += min((ord(name[idx]) - ord('A')), (ord('Z') - ord(name[idx]) + 1))
_name[idx] = 'A'
name = ''.join(_name)
right_cnt = 0
left_cnt = 0
for i in range(idx + 1, len(name)):
if name[i] != 'A':
right_cnt = i - idx
break
for i in range(1, len(name)):
if name[idx - i] != 'A':
left_cnt = i
break
if right_cnt == 0 and left_cnt == 0:
break
elif right_cnt == 0:
answer += left_cnt
if idx - left_cnt < 0:
idx = len(name) + idx - left_cnt
else:
idx = idx - left_cnt
elif left_cnt == 0:
answer += right_cnt
idx += right_cnt
elif right_cnt <= left_cnt:
answer += right_cnt
idx += right_cnt
else:
answer += left_cnt
if idx - left_cnt < 0:
idx = len(name) + idx - left_cnt
else:
idx = idx - left_cnt
return answer