Notice
Recent Posts
Recent Comments
Link
DevKim
[Python] 프로그래머스 Lv.2 - 조이스틱 본문
728x90
programmers.co.kr/learn/courses/30/lessons/42860
[ 알고리즘 ]
그리디
[문제 접근]
이 문제를 풀때, 고려해야할 변수는 두가지이다
1. 해당 알파벳을 찾을 때 다음 알파벳을 찾는게 더 빠른 방법인지, 뒤로 가면서 찾는 방법이 더 빠른지 (ex. A->Z )
2. 커서를 움직일 떄 왼쪽으로 움직일 것인지, 오른쪽으로 움직일 것인지
문제의 핵심은 2번이라고 생각한다. 카운팅한 알파벳은 'A'로 바꿔주고 'A'가 아닌, 즉 카운팅 안된 알파벳까지의 거리를 각각 계산해서 더 작은 거리를 채택한다
[코드]
def solution(name):
answer = 0
i=0
name=list(name)
List=['A']*len(name)
while True:
right=1
left=1
if i==len(name):
break
if name[i]!='A':
if ord(name[i])<=77:
answer+=ord(name[i])-ord('A')
else: #아래로 조작하는게 더 빠름
answer+=ord('Z')-ord(name[i])+1
name[i]='A'
if List==name:
break
else: #A를 만나면
for j in range(1,len(name)):
if name[i+j]=='A':
right+=1
else:
break
if name[i-j]=='A':
left+=1
else:
break
if left < right: #거꾸로 가는게 더 적음
answer+=left
i=i-left
else:
answer+=right
i=i+right
return answer
728x90
'알고리즘 PS' 카테고리의 다른 글
[Python] 프로그래머스 Lv.2 - 이진 변환 반복하기 (0) | 2021.02.11 |
---|---|
[Python] 프로그래머스 Lv.2 - N개의 최소공배수 (0) | 2021.02.11 |
[Python] 프로그래머스 Lv.2 - 소수 찾기 (0) | 2021.02.11 |
[Python] 프로그래머스 Lv.2 - 기능개발 (0) | 2021.02.11 |
[Python] 프로그래머스 Lv.2 - 124 나라의 숫자 (0) | 2021.02.11 |
Comments