[プログラマー]クレーン式抽出ゲーム-level 1(Python,Python)
9747 ワード
https://programmers.co.kr/learn/courses/30/lessons/64061#
問題が長すぎます...質問は省略!
j=j-1の理由は,リストインデックスを作成する際に単位が混同されたため,0から変化する.
ローに近づくとboard[i][j]が0の場合、continueを使用して次の要素を検索します.これは空の人形格であるためです.
では、ここの他の要素はスペースではなく、実際に人形がいるところです!
stackの末尾がboard[i][j]と同じであれば、stackの末尾の要素を削除します.
答えに2を追加します.
(人形が2つ消えていたので2を追加…!と答え続け+=1、検索に時間がかかりました…)
stack[1]!=インスタントラーメン
この要素をstackに追加します.
これは2 D配列とスタックの資料構造を理解しなければならない問題で、少し難しいです.
問題が長すぎます...質問は省略!
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配列とスタックの資料構造を理解しなければならない問題で、少し難しいです.
Reference
この問題について([プログラマー]クレーン式抽出ゲーム-level 1(Python,Python)), 我々は、より多くの情報をここで見つけました https://velog.io/@whgurwns2003/프로그래머스-크레인-인형뽑기-게임-level-1-python파이썬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol