プログラマー-クレーン型綱引きゲーム


使用言語:python 3.7.4

❓ Problem


問題の説明


質問する
プログラマー-クレーン型綱引きゲーム

🚩 Solution


1.方法


👉 クリエイティブポイント
1.boardを右に90度回転して使用
2.move-1の値がboardの行に表示されます
3.スタックarrをリストとして実装
👉 コード実行プロセス
 for m in moves:

 	moves로 myboard 해당 행으로 이동, myboard에서 0보다 큰 가장 마지막 값 l 뽑기
 	if arr의 마지막 값과 l 값이 같으면: answer+=2
 	else arr로 해당값 넣기

2.コード

# Input
board = [
    [0, 0, 0, 0, 0],
    [0, 0, 1, 0, 3],
    [0, 2, 5, 0, 1],
    [4, 2, 4, 4, 2],
    [3, 5, 1, 3, 1]]
moves = [1, 5, 3, 5, 1, 2, 1, 4]
def solution(board, moves):
    moves = [x - 1 for x in moves]

    # board 시계방향 90도 회전
    n = len(board)  # 5
    myboard = [[] for _ in range(n)]

    for i in range(n):
        for j in range(n):
            myboard[j].insert(0, board[i][j])

    # 반복시작
    arr = []
    answer = 0
    for m in moves:
        for v in reversed(range(n)):  # n-1부터 0까지
            if myboard[m][v] != 0:
                if not arr:  # empty arr 일 때
                    arr.append(myboard[m][v])
                else:
                    if arr[-1] == myboard[m][v]: # 연속된 같은 값 삭제
                        answer += 2
                        del arr[-1]
										
                    else: # 연속된 값 아님. 그냥 삽입
                        arr.append(myboard[m][v])

                myboard[m][v] = 0
                break

		return answer

# 함수 호출
solution(board, moves)

3.結果


採点結果


correct
クリエイティブタイム:11:36~11:57
エンコード時間:11:57~1:13

📕 フィードバック


1.検索内容

  • 逆(range(n):n−1から0まで逆シーケンスが近づく.
  • 2.ミス


    3、発展方向


    4.感じ


    コードを書く時間が長い.