[プログラマー]クレーン式抽出ゲーム-level 1(Python,Python)


https://programmers.co.kr/learn/courses/30/lessons/64061#
問題が長すぎます...質問は省略!
def solution(board, moves):
    stack = [0]
    answer = 0 
    for j in moves:
        j=j-1
        
        for i in range(len(board)):
            if board[i][j]==0:
                continue

            else:
                
                if stack[-1] == board[i][j]:
                    del stack[-1]
                    answer +=2
                    board[i][j] = 0
                    break
                else:
                    stack.append(board[i][j])
                    board[i][j]=0
                    break
                        
                        
                
            
    return answer
全体の構造だけを見ると
    for j in moves:
        
        for i in range(len(board)):
            if board[i][j]==0:
                continue

            else:
                
                if stack[-1] == board[i][j]:
                    del stack[-1]
                    break
                else:
                    stack.append(board[i][j])
                    break
通常、2次元配列の問題は、前列for文から行にアクセスする場合が多いが、この問題は前列for文から列にアクセスする場合にのみ便利であるようだ.上記のコードでは、いくつかの項目を追加するだけで問題に答えることができます.
    for j in moves:
    	j=j-1
for文で所与のmove配列を巡回する.
j=j-1の理由は,リストインデックスを作成する際に単位が混同されたため,0から変化する.
        for i in range(len(board)):
        	if board[i][j]==0:
            	continue
ドア内に重なるのがドアです.
ローに近づくとboard[i][j]が0の場合、continueを使用して次の要素を検索します.これは空の人形格であるためです.
            else:
                
                if stack[-1] == board[i][j]:
                    del stack[-1]
                    answer +=2
                    board[i][j] = 0
                    break
                else:
                    stack.append(board[i][j])
                    board[i][j]=0
                    break
elseのboard[i][j]!=0人要素に近いです.
では、ここの他の要素はスペースではなく、実際に人形がいるところです!
stackの末尾がboard[i][j]と同じであれば、stackの末尾の要素を削除します.
答えに2を追加します.
(人形が2つ消えていたので2を追加…!と答え続け+=1、検索に時間がかかりました…)
stack[1]!=インスタントラーメン
この要素をstackに追加します.
これは2 D配列とスタックの資料構造を理解しなければならない問題で、少し難しいです.