n | lost | reserve | return |
---|---|---|---|
5 | [2, 4] | [1, 3, 5] | 5 |
5 | [2, 4] | [3] | 4 |
3 | [3] | [1] | 2 |
lost에서 여벌이 있는 학생을 뺀 진짜 lost를 구한다.
reserve에서 여벌을 도난당한 학생을 뺀 진짜 reserve를 구한다.
우선 전체에서 진짜 lost를 뺀 학생 수는 일단 체육복이 있다.
그 다음은 여벌이 있는 학생이 얼마나 많은 잃어버린 학생을 구제할 수 있는 지를 더한다.
진짜 잃어버린 학생을 돌면서, 만약 수의 -1을 한 학생이 여벌이 있다면, reserve에서 해당 원소를 삭제하고 카운트를 업한 후 continue를 통해 넘어간다.
만약 -1이 없고 +1이 있다면 마찬가지로 reserve에서 해당 원소를 삭제하고 카운트를 업한 후 continue를 통해 넘어간다.
def solution(n, lost, reserve):
realReserve = [x for x in reserve if x not in lost]
realLost = [x for x in lost if x not in reserve]
# 위의 과정을 set함수를 이용해서 구할 수도 있다.
ans = n - len(realLost)
for l in realLost:
if l-1 in realReserve:
realReserve.remove(l-1)
ans += 1
continue
elif l+1 in realReserve:
realReserve.remove(l+1)
ans += 1
continue
return ans