set간의 -(차집합) 연산으로 간편하게 중복제거 후의 값을 다시 대입할 수 있었다.
반복문에서 순환의 범위가 되는 자료 자체를 pop(), remove(), add() 등으로 증감하면
index out range 가 나거나, 검색 범위를 검색하지 않을 수도 있으니 주의하자.
def solution(n, lost, reserve):
# Set
s_lost= set(lost)
s_res = set(reserve)
# 여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다.
# -> lost && reserve는 제외
lost = list(s_lost - s_res)
reserve = list(s_res - s_lost)
len_lost = len(lost)
for i in range(len(lost)):
for j in range(len(reserve)):
#앞/뒤 찾으면 len_lost에서 줄여주고, reserve에서는 뺀다.
if lost[i]-1 == reserve[j]:
len_lost -=1
reserve.pop(j)
break
elif lost[i]+1 == reserve[j]:
len_lost -=1
reserve.pop(j)
break
return n - len_lost
# [3, 5] [4]
# [1, 5] [3, 6, 7, 8, 9]
# [2, 4, 5] [3, 6, 7, 8, 9]