

#include <string>
#include <vector>
using namespace std;
int solution(int n, vector<int> lost, vector<int> reserve) {
int answer = 0;
vector<int> v = {-10};
for(int i=0;i<n;i++)
v.push_back(1);
v.push_back(-10);
for(int i=0;i<lost.size();i++)
v[lost[i]]--;
for(int i=0;i<reserve.size();i++)
v[reserve[i]]++;
for(int i=1;i<=n;i++)
{
if(v[i]==0)
{
if(v[i-1] == 2)
{
v[i-1]--;
v[i] == 1;
answer++;
}
else if(v[i+1] == 2)
{
v[i+1]--;
v[i] == 1;
answer++;
}
}
else answer++;
}
return answer;
}
/*
체육복을 도둑맞아서 여벌의 체육복이 있는 학생 것을 빌려주기로함
학생들의 번호는 체격 순으로 매겨짐 바로 앞번호 또는 뒷번호 학생에게만 체육복을 빌릴 수 있음
최대한 많은 사람이 체육복을 빌려 입는 경우
n = 전체 학생의 수
lost = 체육복을 도난당한 학생들의 번호
reserve = 체육복 빌려 줄 수 있는 학생의 번호
전체 학생수는 최대 30
체육복은 1명은 무조건 도난당함
여벌 가져온 사람도 1명이상
여벌을 가져왔는데 도난을 당한 사람은 빌려 줄 수 없음
*/
시퀀스 컨테이너인 vector에 1을 학생 수 만큼 추가를 했습니다.
이 1이라는 수는 초기화한 숫자로 맨 처음에는 모두가 옷이 있는 상태로 값을 추가를 했습니다.
여기서 인덱스와 번화값이 일치시키게 하기 위하여 0번 인덱스에는 -10 이라는 쓰레기값을 넣어주었습니다.
그리고 lost를 돌면서 인덱스에 해당하는 vector에 값에 값을 -1을 해주었습니다.
그리고 reserve를 돌면서 인덱스에 해당하는 vector에 값을 +1을 해주었습니다.
그런데 여기서 인덱스에 해당하는 값이 0이었다. 하면은 이경우 여분을 가져왔지만 옷 한벌을 도둑맞은 학생이기 때문에 다른 학생에서 옷을 빌려줄 수 없습니다.
이렇게 만들어진 벡터를 돌면서 인덱스에 해당하는 값을 보고 1또는 2일때는 answer의 값을 늘려주고 0일 때는 앞뒤에 인덱스의 값중에서 2가 있다면 answer을 하나 늘려주고, 해당 인덱스의 값을 -1 해줍니다.