[python 3]プログラマーJOYSTIC
1637 ワード
質問元:https://programmers.co.kr/learn/courses/30/lessons/42860
どうして間違ってるの?
最初は近づきやすいが、かなり難しい.グリムディアルゴリズム、現在のカーソル
最近の字でカーソルを移動すればいいと思っていたのですが、大きな穴があったようです.
(実数1.カーソルを左に移動するとindexを0、-1、-2...に変更できますが、len(name)-1に変更する必要はありません.)
疑問点カーソルを左または右に移動するコストは同じです.
左ではなく右の場合、すべてのテストケースを通過してから左の場合、すべてのテストケースを通過することはできません.
(「ABBAAAAAAAAB」のように、カーソルを左に移動してから右に移動したテストケースはパスできません.)
コード#コード#
どうして間違ってるの?
最初は近づきやすいが、かなり難しい.グリムディアルゴリズム、現在のカーソル
最近の字でカーソルを移動すればいいと思っていたのですが、大きな穴があったようです.
(実数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
Reference
この問題について([python 3]プログラマーJOYSTIC), 我々は、より多くの情報をここで見つけました https://velog.io/@beanzinu/Python3프로그래머스조이스틱テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol