내가 푼 풀이 방식과는 다르게 매우 효율적인 방식이 있어서 소개한다.
먼저, student라는 배열에 하나가 더있으면 +1, 없으면 -1을 저장하는 방식이다.
programmers.co.kr/learn/courses/30/lessons/42862
#include <string>
#include <vector>
using namespace std;
int student[35];
int solution(int n, vector<int> lost, vector<int> reserve) {
int answer = 0;
for(int i : reserve) student[i] += 1;
for(int i : lost) student[i] += -1;
for(int i = 1; i <= n; i++) {
if(student[i] == -1) {
if(student[i-1] == 1)
student[i-1] = student[i] = 0;
else if(student[i+1] == 1)
student[i] = student[i+1] = 0;
}
}
for(int i = 1; i <=n; i++)
if(student[i] != -1) answer++;
return answer;
}