데이터와 코드로 세상을 바라봅니다.

[Python3] 프로그래머스 - 조이스틱 : ord(), string to list, list[-a] 본문

Code/Python

[Python3] 프로그래머스 - 조이스틱 : ord(), string to list, list[-a]

코드우드 2021. 3. 8. 17:22
def solution(name):
    answer = 0
    name=list(name)
    index=0
    while(True):
        right=1
        left=1
        if name[index] != 'A': 
            updown = min(ord(name[index])-ord('A'),(ord('Z')-ord(name[index])+1))
            answer += updown
        name[index] = 'A'
        if name == ["A"]*len(name): break
        for i in range(1,len(name)):
            if name[index+i]=="A": right+=1
            else: break
        for i in range(1,len(name)):
            if name[index-i]=="A": left+=1
            else: break
        if right>left:
            answer+=left
            index-=left
        else:
            answer+=right
            index+=right
            
    
    return answer

 

출처 : blog.naver.com/jaeyoon_95/221740770765

 

[프로그래머스] 조이스틱

문제 설명조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다.ex) 완성해야 하는...

blog.naver.com

 

아스키 코드 & ord() 함수 사용법 안내

 

ooyoung.tistory.com/104

 

파이썬 아스키코드 변환 함수 ord( ), chr( ) (Python)

아스키코드 변환 함수 ord( ), chr( ) - 순서 - 1. 아스키코드 설명 2. ord( ) 3. chr( ) 1. 아스키코드(ascii) 아스키는 미국 정보교환 표준 부호 (American Standard Code for Information Interchange)이다. 줄..

ooyoung.tistory.com

 

LIST에 음수 index 하는 경우

Negative numbers mean that you count from the right instead of the left. So, list[-1] refers to the last element, list[-2] is the second-last, and so on.

stackoverflow.com/questions/11367902/negative-list-index

 

Negative list index?

Possible Duplicate: Explain slice notation I'm trying to understand the following piece of code: # node list n = [] for i in xrange(1, numnodes + 1): tmp = session.newobject(); n.appe...

stackoverflow.com

*** String에는 적용하지 못 함!!! > OUT OF LENGTH 에러 발생.

 


 

조이스틱

 

문제 설명

조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다.
ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA

조이스틱을 각 방향으로 움직이면 아래와 같습니다.

▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동

예를 들어 아래의 방법으로 "JAZ"를 만들 수 있습니다.

- 첫 번째 위치에서 조이스틱을 위로 9번 조작하여 J를 완성합니다. - 조이스틱을 왼쪽으로 1번 조작하여 커서를 마지막 문자 위치로 이동시킵니다. - 마지막 위치에서 조이스틱을 아래로 1번 조작하여 Z를 완성합니다. 따라서 11번 이동시켜 "JAZ"를 만들 수 있고, 이때가 최소 이동입니다.

만들고자 하는 이름 name이 매개변수로 주어질 때, 이름에 대해 조이스틱 조작 횟수의 최솟값을 return 하도록 solution 함수를 만드세요.

제한 사항

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

입출력 예

namereturn

"JEROEN" 56
"JAN" 23