문제
https://programmers.co.kr/learn/courses/30/lessons/42860?language=python3
코딩테스트 연습 - 조이스틱
조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다
programmers.co.kr
코드
def solution(name):
answer = 0
length = len(name)
move = length - 1
temp=[n for n in name]
for i in range(len(temp)):
answer += min(ord(temp[i]) - ord('A'), ord('Z') - ord(temp[i]) + 1)
index = i + 1
#연속 되는 A 끝 index
while index < length and temp[index] == 'A':
index += 1
#순서대로 가는것과, 돌아가는것 비교
move = min(move, i * 2 + length - index)
#BBBAAAAAB와 같이 처음부터 뒷부분을 갔다가 다시 앞에서부터
move = min(move, (length - index) * 2 + i)
return answer + move
'문제풀이 > 그리디' 카테고리의 다른 글
[파이썬] [그리디] Pro 구명보트 (0) | 2022.02.16 |
---|---|
* [파이썬] [그리디] Pro 큰 수 만들기 (0) | 2022.02.16 |
[파이썬] [그리디] 백준 2836 수상택시 (0) | 2022.01.11 |
* [파이썬] [그리디] 백준 17619 개구리 점프 (0) | 2022.01.07 |
[파이썬] [그리디] 백준 13904 과제 (0) | 2022.01.06 |