[python 3]プログラマーJOYSTIC

1637 ワード

質問元:https://programmers.co.kr/learn/courses/30/lessons/42860
どうして間違ってるの?
最初は近づきやすいが、かなり難しい.グリムディアルゴリズム、現在のカーソル
最近の字でカーソルを移動すればいいと思っていたのですが、大きな穴があったようです.
(実数1.カーソルを左に移動するとindexを0、-1、-2...に変更できますが、len(name)-1に変更する必要はありません.)
疑問点カーソルを左または右に移動するコストは同じです.
左ではなく右の場合、すべてのテストケースを通過してから左の場合、すべてのテストケースを通過することはできません.
(「ABBAAAAAAAAB」のように、カーソルを左に移動してから右に移動したテストケースはパスできません.)
コード#コード#
def solution(name):
    answer = 0
    word = ['A'] * len(name)
    d = []
    for i in range( len(name) ):
        if( word[i] != name[i] ):
            d.append(i)
    i = 0 
    while( len(d) != 0 ):
        if( word[i] != name[i] ):
            b = ord(name[i]) - ord('A')
            f = ord('Z')- ord(name[i]) + 1
            if ( b < f):
                answer += b
            else:
                answer += f
            d.remove(i)
        if( len(d) != 0 ):
            count = 0
            f,b = i,i
            while(True):
                count += 1
                if ( f-1 == -1 ): 
                    f = len(name)-1
                else:
                    f -= 1
                if ( b+1 == len(name) ):
                    b = 0
                else:
                    b += 1
                if( b in d ):
                    answer += count
                    i = b
                    break
                if( f in d ):
                    answer += count
                    i = f
                    break
    return answer