티스토리 뷰
문제 설명
조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다.
ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA
조이스틱을 각 방향으로 움직이면 아래와 같습니다.
▲ - 다음 알파벳
▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로)
◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서)
▶ - 커서를 오른쪽으로 이동
예를 들어 아래의 방법으로 JAZ
를 만들 수 있습니다.
- 첫 번째 위치에서 조이스틱을 위로 9번 조작하여 J를 완성합니다.
- 조이스틱을 왼쪽으로 1번 조작하여 커서를 마지막 문자 위치로 이동시킵니다.
- 마지막 위치에서 조이스틱을 아래로 1번 조작하여 Z를 완성합니다.
따라서 11번 이동시켜 "JAZ"를 만들 수 있고, 이때가 최소 이동입니다.
만들고자 하는 이름 name이 매개변수로 주어질 때, 이름에 대해 조이스틱 조작 횟수의 최솟값을 return 하도록 solution 함수를 만드세요.
제한 사항
- name은 알파벳 대문자로만 이루어져 있습니다.
- name의 길이는 1 이상 20 이하입니다.
입출력 예
name | return |
---|---|
JEROEN | 56 |
JAN | 23 |
https://programmers.co.kr/learn/courses/30/lessons/42860?language=python3
1. A가 아닌 각 자리에서 알파벳을 바꾼다.
2. 오른쪽으로 바꾸는것과 왼쪽(뒤)으로 바꾸는 것중 작은 것을 택함
3. 모두 A가 될때 까지 오른쪽으로 이동하는 것과 왼쪽으로 이동하는 것중 작은 것을 택함
4. 2,3번을 합을 리턴
def get_dct(nm, rev=False):
i = 0
rm_n = list(nm)
ct = -1
while "".join(rm_n) != "A"*len(nm):
if rm_n[i] != "A":
rm_n[i] = "A"
ct += 1
i = i + (-1 if rev else 1)
return ct
def solution(nm):
az = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ct = 0
for i, n in enumerate(nm):
idx = az.index(n)
idx_rv = len(az)-idx
dis = idx if idx < idx_rv else idx_rv
ct += dis
ct_r, ct_l = get_dct(nm), get_dct(nm, rev=True)
return ct + (ct_r if ct_r < ct_l else ct_l)
'python lecture > programmers' 카테고리의 다른 글
[edu] 포켓몬 : 찾아라 프로그래밍 마에스터 (프로그래머스 lv2) (0) | 2018.12.22 |
---|---|
[edu] 구명보트 (프로그래머스 lv2) (0) | 2018.12.21 |
[edu] 더 맵게 : 힙(Heap) (프로그래머스 lv2) (0) | 2018.12.21 |
[edu] 영어 끝말 잇기 (프로그래머스 lv2) (0) | 2018.12.21 |
[edu] 행렬의 곱셈 (프로그래머스 lv2) (0) | 2018.12.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 파이썬 입문
- admin.py
- 장고 플러스친구 자동응답
- 문서 비교
- GIT
- 면접답변
- Python
- django chatbot
- 문과 코딩
- 모바일 테마 적용
- django
- chatbot
- 플러스친구 자동응답
- 파이썬 강좌
- 파이썬 프로그래밍
- 파이썬
- Tistory
- 면접정답
- PuTTYGen
- 장고
- pycrypto
- 파이썬 독학
- 모바일 스킨 적용
- gitlab
- 이미지 비교
- virtualenv
- gitignore
- 장고 카톡 자동응답
- 엑셀 비교
- wsgi
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함