728x90
🍒문제
programmers.co.kr/learn/courses/30/lessons/42860?language=python3
🍒풀이
1. 위/아래 이동 중 짧은 거리 구하기 (A ~ Z)
2. 왼/오른쪽 이동 중 짧은 거리 구하기
2-1. answer 값 갱신
2-2. index 값 갱신
3. 초기값 'AAA'와 동일해지면 종료
🍒코드
def solution(name):
answer = 0
name = list(name)
start = ['A'] * len(name)
idx = 0
while(True):
right = 1
left = 1
if name[idx] != 'A':
mv = min(ord(name[idx])-ord('A'), (ord('Z')-ord(name[idx])) + 1)
answer += mv
name[idx] = 'A'
if name == start:
break
for i in range(1, len(name)):
if name[idx+i] == 'A':
right += 1
else:
break
if name[idx-i] == 'A':
left += 1
else:
break
if right > left:
answer += left
idx -= left
else:
answer += right
idx += right
return answer
728x90
'코딩 테스트' 카테고리의 다른 글
[프로그래머스] 메뉴 리뉴얼 (Python) (0) | 2021.03.18 |
---|---|
[프로그래머스] 큰 수 만들기 (Python) (0) | 2021.03.18 |
[프로그래머스] 삼각 달팽이 (C++) (0) | 2021.03.17 |
[Codility] Lesson8. Dominator (0) | 2021.03.03 |
[Codility] Lesson4. Brackets (0) | 2021.03.03 |
댓글