def solution(n, lost, reserve):
u = [1] * (n+2) #헛깨비 2개 만들기
for i in reserve: #i에는 여벌의 체육복을 가져온 학생들의 번호
u[i] += 1
for i in lost: #i에는 체육복을 잃어버린 학생들의 번호
u[i] -= 1
for i in range(1,n+1):
if u[i-1] == 0 and u[i] == 2:
u[i-1:i+1] = [1,1]
elif u[i+1] == 0 and u[i] == 2:
u[i:i+2] = [1,1]
return len([x for x in u[1:-1] if x>0])
n의 크기가 매우 크고 체육복을 잃어버린 학생 수가 별로 없다면?
def solution(n, lost, reserve):
s = set(lost) & set(reserve) # &는 교집합을 뜻함
l = set(lost) - s # 체육복을 빌려야하는 학생들
r = set(reserve) - s # 체육복을 빌려줄 수 있는 학생들
for x in sorted(r):
if x-1 in l:
l.remove(x-1)
elif x+1 in l:
l.remove(x+1)
return n - len(l)