여분의 체육복을 가진 학생은 본인 위치의 앞 뒷자리 학생에게만 체육복을 빌려 줄 수 있다.
단, 맨 앞의 학생은 바로 뒷자리 학생에게만 맨 뒷자리 학생은 바로 앞자리 학생에게만 남는 체육복을 건네 줄 수 있다.
따라서 맨 앞자리 학생부터 뒷자리 학생에게 체육복을 넘겨주거나 맨 뒷자리 학생부터 앞자리 학생에게 체육복을 건네주는 방식으로 문제를 해결하면 된다.
def solution(n, lost, reserve):
answer = 0
# 1 ~ N번 학생이 존재한다면 0번쨰 자리와 N+1번째 자리를 만들어서 처리
arr = [0] * (n+2)
# 각 학생들의 체육복 여부 증감
for i in lost:
arr[i] -= 1
for i in reserve:
arr[i] += 1
for i in range(1, n+1):
if arr[i] == -1:
if arr[i-1] > 0:
arr[i] += 1
arr[i-1] -= 1
elif arr[i+1] > 0:
arr[i] += 1
arr[i+1] -= 1
answer = n - arr.count(-1)
return answer