import numpy as np
from queue import Queue
def solution(board, moves):
    board = np.array(board).T.tolist() # 전치시킨 후 리스트로 만듬
    result = []
    count = 0

    # 결과 리스트에 뽑은 인형들 담기
    for m in range(len(moves)):
        for i in range(len(board)):
            if board[moves[m]-1][i] != 0:
                result.append(board[moves[m] - 1].pop(i))   
                board[moves[m] - 1].insert(i, 0)
                
                # 결과 리스트에서 뽑은 인형 중 같은 인형 터뜨려 없애기 
                if len(result) > 1:
                    if result[-1] == result[-2]:
                        result.pop(-1)
                        result.pop(-1)
                        count += 2
                break         
    return count

위의 코드에서

# 결과 리스트에서 뽑은 인형 중 같은 인형 터뜨려 없애기 
if len(result) > 1:
	if result[-1] == result[-2]:
		result.pop(-1)
		result.pop(-1)
		count += 2
	break

이 부분

결과 리스트의 크기가 1보다 클 때,

결과 리스트의 맨 마지막([-1])과 그 바로 앞([-2])를 비교

어차피 if문이 for 문 안에 들어가 있기 떄문에

그 안에서 해결하면 됨

 

내가 처음 시도한 접근은

# 결과 리스트에서 뽑은 인형 중 같은 인형 터뜨려 없애기        
for i in range(len(result)):
	if result[i] == result[i+1]:
		count += 2
        result.pop(i)
        result.pop(i)

위의 방법인데

결국엔 [i+1] 때문에 range를 벗어나게 됨

그리고 구태여 for문을 밖에 다시 만들 필요가 전혀 없음

다시 복기해볼 것

728x90

'개발 > 복기' 카테고리의 다른 글

3행 2열의 array에서 열 위치 치환  (0) 2022.08.25
복사했습니다!