풀이
Point
- 채육 수업을 들을 수 있는 학생 배열 p에 대한 초기화 방식
- p 배열 요소의 처음과 끝이 어떻게 구성되느냐에 따른 해결방법 모색
#include <string>
#include <vector>
using namespace std;
int solution(int n, vector<int> lost, vector<int> reserve) {
int answer = 0;
vector<int> p(n);
for(int i=0; i<reserve.size(); i++){
if(reserve[i]!=0){
p[reserve[i]-1] +=1;
}
}
for(int i=0; i<lost.size(); i++){
if(lost[i]!=0){
p[lost[i]-1] += -1;
}
}
for(int i=0; i<p.size(); i++){
if(p[i]==1){
if(i-1 > -1){
if(p[i-1]==-1){
p[i-1] += 1;
p[i] += -1;
}
}
}
if(p[i]==1){
if(i < p.size() -1){
if(p[i+1]==-1){
p[i+1] += 1;
p[i] += -1;
}
}
}
}
for(int i=0; i<p.size(); i++){
if(p[i]==0 || p[i]==1){
answer++;
}
}
return answer;
}