문제는 이 링크를 타고 가면 있습니다.
이 문제는 정렬을 필요로 합니다. 왜일까요?
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(int n, vector<int> lost, vector<int> reserve) {
int answer = 0;
sort(lost.begin(), lost.end());
sort(reserve.begin(), reserve.end());
vector<int>::iterator lost_iter, res_iter;
lost_iter = lost.begin();
res_iter = reserve.begin();
while ((lost_iter != lost.end()) && (res_iter != reserve.end())) {
if (*lost_iter < *res_iter) {
lost_iter++;
} else {
if (*lost_iter == *res_iter) {
lost.erase(lost_iter);
reserve.erase(res_iter);
} else res_iter++;
}
}
lost_iter = lost.begin();
res_iter = reserve.begin();
while ((lost_iter != lost.end()) && (res_iter != reserve.end())) {
if (*lost_iter + 1 < *res_iter) {
lost_iter++;
} else {
if ((*lost_iter - 1 == *res_iter) || (*lost_iter + 1 == *res_iter)) {
lost.erase(lost_iter);
reserve.erase(res_iter);
} else res_iter++;
}
}
return n - lost.size();
}
'개발 관련 기타 > 알고리즘' 카테고리의 다른 글
[프로그래머스] (C++) 카펫 (0) | 2019.12.04 |
---|---|
[프로그래머스] (C++) 단체사진 찍기 (0) | 2019.11.26 |
[프로그래머스] (C++) 숫자의 표현 (0) | 2019.11.22 |
[프로그래머스] (C++) 프린터 (0) | 2019.11.20 |
[프로그래머스] (C++) 땅따먹기 (0) | 2019.11.18 |