개발/복기
리스트에서 맞닿아 있는 값을 비교
dev-bleck
2022. 8. 28. 23:16
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