def solution(n, lost, reserve):
answer = 0
available = n - len(lost)
lost.sort()
for l in lost:
if l - 1 in reserve:
reserve.remove(l-1)
available += 1
pass
elif l + 1 in reserve:
reserve.remove(l+1)
available += 1
pass
answer = available
return answer
5번 테케에서 계속 오류 발생.
lost이면서 reserve인 케이스를 처리하지 않아서 문제 발생한 것으로 추정
def solution(n, lost, reserve):
answer = 0
lost.sort()
# 여분 있는데 도난당한 학생 제거
lost_ = set(lost)
reserve_ = set(reserve)
both = lost_.intersection(reserve_)
for b in list(both):
lost.remove(b)
reserve.remove(b)
# lost인 학생 여벌 찾아주기
available = n - len(lost)
for l in lost:
if l - 1 in reserve:
reserve.remove(l-1)
available += 1
elif l + 1 in reserve:
reserve.remove(l+1)
available += 1
answer = available
return answer
정석적인 DP로 푼 것 같진 않지만, 어쨌든
l-1
, l+1
순서대로 비교하고 있기 때문에 최대의 해를 구하는 데에는 문제가 없다.