2. 잃어버린 번호와 여벌을 가지고 있는 변수 lost와 reserve를 인덱스로 가져와 해당값을 -1, +1 해줌으로써 쉽게 변환 --------- [1,1,1,1,1]에서 [2,4]를 받아와 -1해줌으로써 ->[1,0,1,0,1]형태로 처리, [1,3,5]를 받아와 +1을 해 [2,0,2,0,2] 형태로 만듬
3. 위에서 만든 리스트에 i가 0 보다 클 경우와, i가 n-1 보다 작을경우 나누어 처리
ex1) i 가 0보다 클경우 해당값이 0이고 앞에값이 2이면 앞에 값으로 부터 1을 받아온다(인덱스 0은 앞에값을 받을 수 없으므로 i가 n-1보다 작을경우에 처리)
ex2) i 가 n-1보다 작을경우 해당값이 0이고 뒤에값이 2이면 뒤에 값으로 부터 1을 받아온다(인덱스 n-1은 뒤에값으로 부터 받을 수 없으므로 i가 0보다 클경우에 처리)
def solution(n, lost, reserve):
answer = 0
have = [1]*n //다 가지고 있다가정하에 n개의 수만큼 1을 넣어준다
//잃어버린 번호를 인덱스로 가져와 -1을 해준다
for i in lost:
have[i-1]= have[i-1]-1 //[1,0,1,0,1]
//여유분을 가지고 있는 번호를 인덱스로 가져와 +1을 해준다
for i in reserve:
have[i-1]= have[i-1]+1 //[2,0,2,0,2]
// enumerate함수를 통해 i와v에 인덱스 와 값을 넣어준다
for i,v in enumerate(have):
// 2가지 상황으로 분리(i<0일경우, i<n-1일경우)
// -i가 0일때와 i가 n-1일경우 서로 값을 처리
//i가 0 보다 클 경우 값이 0이고, 앞에 있는 값이 2이면
//해당 인덱스값에 +1, 앞에 인덱스에 -1을 해준다
if i>0 and v==0 and have[i-1]==2:
have[i] += 1
have[i-1] -= 1
//i가 n-1보다 작을 경우 값이 0이고, 뒤에 있는 값이 2이면
//해당 인덱스값에 +1, 뒤에 인덱스에 -1을 해준다
elif i < n-1 and v==0 and have[i+1]==2:
have[i] += 1
have[i+1] -= 1
해당 개수에서 0의 개수를 빼준다
answer = n - have.count(0)
return answer