[PG42860] 조이스틱
✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺/프로그래머스

[PG42860] 조이스틱

프로그래머스

🚩 문제 설명

https://programmers.co.kr/learn/courses/30/lessons/42860

 

코딩테스트 연습 - 조이스틱

조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다

programmers.co.kr

프로그래머스 #42860

◾ 조이스틱을 이용해서 알파벳을 바꾸고 원하는 문자열로 나타내는 문제

◾ 맨 처음엔 문자가 A로만 이루어져 있다.

◾ A에서 아래 버튼을 누르면 Z로 이동한다.

◾ 첫번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서가 이동한다.

 

 


 

 

➕ 제안사항

1. name은 알파벳 대문자로만 이루어져 있습니다.
2. name의 길이는 1 이상 20 이하입니다.

 

 


 

 

✅ 입출력

name :  만들고자 하는 이름 변수
return ➡️ 조이스틱의 조작횟수를 반환한다.
name return
"JEROEN" 56
"JAN"
23

✔️ 예시

◾ 검은색이 커서라고 보면 된다. 커서의 이동도 조작횟수로 쳐야한다.

◾ 위와 같은 과정을 통해서

  • 9 + (1 + 4) + (1 + 9) + (1 + 12) + (1 + 4) + (1 + 13)
  • 9 + 5 + 10 + 13 + 5 + 14 = 56
  • 따라서, 56번의 조작횟수를 반환한다.

 


 

 

📑 문제 풀이

with 파이썬 (Python)
def solution(name):
    answer = 0
    min_move = len(name) - 1
    next = 0

    for i, ch in enumerate(name):
        answer += min(ord(ch) - ord('A'), ord('Z') - ord(ch) + 1)

        next = i + 1
        while next < len(name) and name[next] == 'A':
            next += 1

        min_move = min(min_move, i + i + len(name) - next)
        
    answer += min_move
    return answer

 

728x90

'✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺 > 프로그래머스' 카테고리의 다른 글

[PG12901] 2016년  (0) 2021.11.23
[PG42888] 오픈채팅방  (0) 2021.11.21
[PG42840] 모의고사  (0) 2021.11.06
[PG64061] 크레인 인형뽑기 게임  (0) 2021.11.06
[PG67256] 키패드 누르기  (0) 2021.11.06