프로그래머스 120876 겹치는 선분의 길이

1 개요[ | ]

프로그래머스 120876 겹치는 선분의 길이

2 C++[ | ]

#include <string>
#include <vector>

using namespace std;

vector<int> dup(vector<int> a, vector<int> b) {
    if(a[1] < b[0] || a[0] > b[1]) {
        return vector<int> {0, 0};
    }
    return vector<int> {max(a[0],b[0]), min(a[1],b[1])};
}

int len(vector<int> line) {
    return line[1] - line[0];
}

int solution(vector<vector<int>> lines) {
    vector<int> double1 = dup(lines[0], lines[1]);
    vector<int> double2 = dup(lines[1], lines[2]);
    vector<int> double3 = dup(lines[2], lines[0]);
    vector<int> triple = dup(double1, double2);
    return len(double1) + len(double2) + len(double3) - 2*len(triple);
}