Photo by Pietro Mattia on Unsplash
def solution(board, moves):
basket = []
cnt = 0
for move in moves:
for i in range(len(board)):
if board[i][move-1] and basket[-1:] == [board[i][move-1]]:
board[i][move-1] = 0
basket.pop()
cnt+=1
break
if board[i][move-1]:
basket.append(board[i][move-1])
board[i][move-1] = 0
break
return cnt*2
무식하게 풀기를 시도한 다음 개선을 아래의 방식으로 밖에 하지 못했다. 분명히 저 길고 긴 코드를 줄일 수 있을 것 같은데 아직 고민이 부족하다. 전체 문제를 돌아보며 리팩터링 할 때 또 고쳐봐야겠다.
if board[i][move-1] != 0:
if board[i][move-1]:
def solution(id_list, reports, k):
check = {report : report.split(' ')[-1] for report in reports}
will_be_banned = [user_id for user_id in id_list if list(check.values()).count(user_id) > k-1]
answer = [0]* len(id_list)
for key in check.keys():
splited_key = key.split(' ')
report_p, reported_p = splited_key[0],splited_key[1]
if reported_p in will_be_banned:
answer[id_list.index(report_p)] +=1
return answer