def solution(n, lost, reserve):
# 1. 임의의 배열 stack을 만든다.
stack = []
for r in reserve:
if r in lost:
stack.append(r)
for s in stack:
lost.remove(s)
reserve.remove(s)
# 2. 여벌 체육복이 있는 학생은 다른 학생에게 체육복을 빌려준다.
for r in reserve:
if r-1 in lost:
lost.remove(r-1)
continue
if r+1 in lost:
lost.remove(r+1)
continue
# 3. lost에는 빌리지 못한 학생이 남아있다.
result = n - len(lost)
return result
1. 임의의 배열 stack을 만든다.
2. 여벌의 체육복이 있는 학생은 다른 학생에게 체육복을 빌려준다.
3. lost에는 빌리지 못한 학생이 남아있다.
for r in reserve[:]:
for
문을 돌릴 때, 구문 안에서 배열의 원소를 remove
하면 인덱스가 달라지는 문제가 발생한다. 따라서 stack 배열을 따로 만들어 둔 것이다.
이럴때, reserve[:]
을 사용하면 된다.
reserve
배열을 복사한다고 생각하면 된다!
# origin code
stack = []
for r in reserve:
if r in lost:
stack.append(r)
for s in stack:
lost.remove(s)
reserve.remove(s)
# change code
for r in reserve[:]:
if r in lost:
lost.remove(r)
reserve.remove(r)