테스트 케이스는 통과했지만 채점을 통과하지 못함.
문제점1. 체육수업을 들을 수 있는 학생의 최댓값을 계산할 때 도난당했지만 여분을 가지고 온 학생은 수업을 들을 수 있다는 것을 고려하지 못했음.
문제점2. 여분을 가지고 왔지만 도난당한 학생을 빌려줄 수 없으므로 reserve배열에서 제외시켜야 함.
❗해결: reverse배열과 lost배열 둘 다 속하는 사람을 reveerse배열과 lost배열 모두에서 제외시킨다.
n: 전체학생의 수
lost: 체육복을 도난당한 학생들의 번호가 담긴 배열
reserve: 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열
set_lost: 체육복을 도난당한 학생들중에서 여벌의 체육복을 가져온 학생들을 제외한 배열
set_reserve: 여벌의 체육복을 가져온 학생들중에서 체육복을 도난당한 학생들을 제외한 배열
answer: 체육수업을 들을 수 있는 학생의 최댓값
answer에 전체학생의 수에서 set_lost배열에 있는 학생의 수만큼 뺀 수를 넣어준다. 그리고 set_lost 배열을 for문으로 돌면서 set_reserve에 i-1,i+1이 있는지 확인하고 있다면 체육수업을 들을 수 있는 학생이 한명 더 늘어났으므로 answer+1을 해주고 여벌의 체육복을 빌려줬으므로 set_reserve배열에서 i-1이 빌려줬다면 i-1을 i+1이 빌려줬다면 i+1을 삭제한다.
따로 count변수를 두지않아도 된다는 것을 알게됨.
🔗프로그래머스 - 체육복
https://programmers.co.kr/learn/courses/30/lessons/42862