lost와 reserve에서 해당 케이스의 학생을 모두 제외한다
# 여벌 체육복은 하나만 가져올 수 있다고 가정
# 여벌 체육복을 가져온 학생도 도난 당할 수 있음
def solution(n, lost, reserve):
lost.sort()
reserve.sort()
# 여벌 체육복을 가져온 학생이 도난 당한 경우 고려 (자기 자신에게 빌려간다고 생각)
for l in lost:
if l in reserve:
lost.remove(l)
reserve.remove(l)
for l in lost:
if l != 1 and l != n:
if l-1 in reserve:
lost.remove(l)
reserve.remove(l-1)
elif l+1 in reserve:
lost.remove(l)
reserve.remove(l+1)
if l == 1:
if l+1 in reserve:
lost.remove(l)
reserve.remove(l+1)
if l == n:
if l-1 in reserve:
lost.remove(l)
reserve.remove(l-1)
answer = n - len(lost)
return answer
입력값 〉 5, [2, 4], [1, 3, 5] 일 때 자꾸 answer가 4가 나옴.....왜?
# 여벌 체육복은 하나만 가져올 수 있다고 가정
# 여벌 체육복을 가져온 학생도 도난 당할 수 있음
def solution(n, lost, reserve):
lost.sort()
# 여벌 체육복을 가져온 학생이 도난 당한 경우 고려 (자기 자신에게 빌려간다고 생각)
for l in lost:
if l in reserve:
lost.remove(l)
reserve.remove(l)
# 인덱스가 아니니까 1,n의 경우 고려하지 않아도됨!!
for l in lost:
f = l-1
b = l+1
if f in reserve:
lost.remove(l)
reserve.remove(f)
elif b in reserve:
lost.remove(l)
reserve.remove(b)
answer = n - len(lost)
return answer
# 여벌 체육복을 가져온 학생도 도난 당할 수 있음
def solution(n, lost, reserve):
# 여벌 체육복을 가져온 학생이 도난 당한 경우 고려 (자기 자신에게 빌려간다고 생각)
total_lost = list(set(lost)-set(reserve))
total_reserve = list(set(reserve)-set(lost))
total_lost.sort()
# 인덱스가 아니니까 1,n의 경우 고려하지 않아도됨!!
# 순회를 위한 _lost
_lost = total_lost.copy()
for l in _lost:
f = l-1
b = l+1
if f in total_reserve:
total_lost.remove(l)
total_reserve.remove(f)
elif b in total_reserve:
total_lost.remove(l)
total_reserve.remove(b)
answer = n - len(total_lost)
return answer