시작점과 끝점이 담긴 2차원 정수형 벡터와 시작점과 끝점이 담긴 정수 벡터 하나를 받는다.
문제는 2차원 벡터에 새로운 구간을 적용하여 넣어 계산된 구간을 반환하는 것이다.
새로운 구간이 이미 존재하는 구간들과 겹칠 경우 이를 계산하여,
구간을 늘리고 병합하는 작업을 해야한다.
class Solution {
public:
static const int HEAD = 0;
static const int TAIL = 1;
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
vector<vector<int>> result{};
int index{0};
int length = intervals.size();
while (index < length && intervals[index][TAIL] < newInterval[HEAD])
{
result.push_back(intervals[index++]);
}
if (index < length)
{
newInterval[HEAD] = std::min(newInterval[HEAD], intervals[index][HEAD]);
}
while (index < length && intervals[index][HEAD] <= newInterval[TAIL])
{
newInterval[TAIL] = std::max(newInterval[TAIL], intervals[index][TAIL]);
index++;
}
result.push_back(newInterval);
while (index < length)
{
result.push_back(intervals[index++]);
}
return result;
}
};