728x90
반응형
💡solutions )
💬 로직 크게 두 가지 => 상하로 최소 거리 구해서 알파벳 바꾸기 / 좌우로 최소 거리 구해서 방향 정한 후 이동하기
💬 change 배열에는 각 알파벳마다 상하 조정 중 min값으로 최소 횟수를 담아두기
💬 idx 0번 부터 시작해서 좌우 이동 횟수를 answer에 더해주기
💬 좌우 방향 전환 시에는 바꿔야하는 알파벳이 나오기까지의 좌우 거리를 구하고, 그 중 최소값이 되는 방향으로 전환한다.
💬 모든 알파벳이 조정된 경우(change의 sum이 0일 때) -> 결과값 반환
🎫code )
def solution(name):
# 상하 조정으로 알파벳 바꾸기
change = [min(ord(i) - ord('A'), ord('Z') - ord(i) + 1) for i in name]
idx = 0
answer = 0
while True:
answer += change[idx]
change[idx] = 0
if sum(change) == 0:
return answer
# 좌우 이동향방을 정하기
left, right = 1, 1
while change[idx - left] == 0:
left += 1
while change[idx + right] == 0:
right += 1
# 위치(인덱스) 조정
answer += left if left < right else right
idx += -left if left < right else right
📌 description )
문제출처 : programmers.co.kr/learn/courses/30/lessons/42860?language=python3
문제 설명 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. 예를 들어 아래의 방법으로 JAZ를 만들 수 있습니다. 만들고자 하는 이름 name이 매개변수로 주어질 때, 이름에 대해 조이스틱 조작 횟수의 최솟값을 return 하도록 solution 함수를 만드세요. 제한 사항 name은 알파벳 대문자로만 이루어져 있습니다. name의 길이는 1 이상 20 이하입니다. 입출력 예 ※ 공지 - 2019년 2월 28일 테스트케이스가 추가되었습니다. |
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 후보키 /파이썬 /Python /2019 KAKAO BLIND RECRUITMENT /카카오 코테 (1) | 2020.09.17 |
---|---|
[프로그래머스] 큰 수 만들기/ 파이썬/ Python / Stack (0) | 2020.09.15 |
[프로그래머스] 다트게임 /파이썬 /Python/ 2018 KAKAO BLIND RECRUITMENT/ 카카오 코딩 테스트 (0) | 2020.09.10 |
[프로그래머스] 프렌즈4블록 /파이썬 /Python /2018 KAKAO BLIND RECRUITMENT (2) | 2020.09.08 |
[프로그래머스] 키패드 누르기 /파이썬 /Python /2020 카카오 인턴십 (0) | 2020.08.27 |