여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다. 이때 이 학생은 체육복을 하나만 도난당했다고 가정하며, 남은 체육복이 하나이기에 다른 학생에게는 체육복을 빌려줄 수 없습니다.
이 제한사항이다. reserve
에 있는 학생이 lost
에도 있을 수 있다는 뜻. def solution(n, lost, reserve):
answer = 0
new_reserve = set(reserve) - set(lost)
new_lost = set(lost) - set(reserve)
for nr in new_reserve:
if nr - 1 in new_lost:
new_lost.remove(nr-1)
elif nr + 1 in new_lost:
new_lost.remove(nr+1)
answer = n - len(new_lost)
return answer
set
를 이용해서 모든 중복이 제거된 new_reserve
와 new_lost
를 만들어 준다. 이후 반복문은 체육복을 가지고 있는 학생의 번호 +-1이 new_lost
에 있다면 빌려준 것이니, remove
로 new_lost
에서 제거해주는 과정.
이 과정을 다 지나고 나면 new_lost
에는 체육복을 빌려받지 못해 수업을 못듣는 학생들만 모여있으므로 전체학생수 n
에서 len(new_lost)
를 빼주면 답이 된다.