コードテスト練習-クレーン型綱引きゲーム


コードテスト練習-クレーン型抽出ゲーム
ゲーム画面の2次元配列板と起動クレーンの位置の配列動作をパラメータとした場合,起動クレーン後に爆発して消えた人形の個数を求める.

#正解コード


簡単な5 x 5ゲームだけを考えて、コードを書き、コードを一般化して、問題の答えを見つけます.
def solution(board, moves):
    bucket = [0]
    answer = 0
    
    for i in range(len(moves)):
        for j in range(len(board)):
            if board[j][moves[i]-1] != 0:
                if board[j][moves[i]-1] == bucket[-1]:
                    bucket.pop(-1)
                    answer += 2
                else:
                    bucket.append(board[j][moves[i]-1])
                board[j][moves[i]-1] = 0
                break             

    return answer

remove vs pop


クレーンで取り出した人形がかごの最上端の人形と同じであれば、取り出した人形をかごに入れず、かごの最上端の人形の1つだけを拭く段階です.
消すと思ったら、まずremoveを思い出しました.だからbucketremove(bucket[1])でbucketが間違っていますポップ(-1)だったので打たれました
どんな違いがありますか.しかし問題に集中し、remove関数を混同した.ここでremoveをbucket[1]=4と呼ぶと、bucketの-1値をクリアするのではなく、最初に見つかった4がクリアされるため、エラーが発生します.エラーに加えてremoveはO(n)の時間が必要なのでpopを使用することが望ましい.