https://programmers.co.kr/learn/courses/30/lessons/42860
코딩테스트 연습 - 조이스틱
조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다
programmers.co.kr
이문제 어렵다
그냥 문제 우선 그냥 문자를 고를때 최소는 쉬운데
어려운 접이 방향키로 이동하는 최소값을 구하는 것이 어렵다.
그점은
[프로그래머스, 파이썬] 조이스틱, Greedy
[프로그래머스, 파이썬] 코딩테스트 고득점 Kit - Greedy, level 2 조이스틱
velog.io
이 분 블로그를 참고했다.
우선
1) 가장 기본으로 그냥 무작정으로 문자열 끝까지 이동하는 경우를 초기 값으로 설정해둔다.
2) 처음부터 해당 문자까지 왕복으로 왔다갔다 + 연속된 A의 문자 인덱스가 끝난 지점에서 전체길이 뺀값
3) 시작부터 연속된 A의 문자 인덱스가 끝난 지점에서 전체길이 뺀값 왕복 + A나오기 까지 인덱스
이걸 해석하면 되는데 이걸 생각하는 것이 정말 어렵다. 허허
def solution(name):
answer = 0
min_move = len(name) -1
for i in range(len(name)):
answer += min(ord(name[i])-ord("A"),ord("Z")+1-ord(name[i]))
next = i + 1
while next < len(name) and name[next] == 'A':
next += 1
min_move = min([min_move, 2 *i + len(name) - next, i + 2 * (len(name) -next)])
answer += min_move
return answer
반응형
'코딩 > 프로그래머스 lv2' 카테고리의 다른 글
[프로그래머스] 방문 길이 - python (0) | 2022.11.09 |
---|---|
[프로그래머스] 스킬트리 - python (0) | 2022.11.08 |
[프로그래머스] 네트워크 - 파이썬 (0) | 2022.04.07 |
[프로그래머스] [3차] 압축 - 파이썬 (0) | 2022.03.24 |
[프로그래머스] 후보키 - 파이썬 (0) | 2022.03.23 |