선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요.
lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다.
function solution(lines) {
let total = (lines[0][1]-lines[0][0]) + (lines[1][1]-lines[1][0]) + (lines[2][1]-lines[2][0])
console.log(total)
let arr = lines.join(',')
// let arr1 = arr.map(x => parseInt(x))
let arr2 = arr.split(',').map(Number).sort((a,b) => a - b)
return total - (arr2[5] - arr2[0])
}
const solution = (lines) => {
let sumArr = []
let max, min ;
let ans = 0
//모든 원소 배열에 추가
for (let i = 0 ; i < lines.length; i ++){
for ( let j = lines[i][0] ; j < lines[i][1] + 1 ; j ++ ){
sumArr.push(j)
}
}
sumArr.sort((a,b) => a - b)
max = sumArr.at(-1)
min = sumArr[0]
const findDuplicate = sumArr => sumArr.filter((item, idx) => sumArr.indexOf(item) !== idx)
const duplicate = findDuplicate(sumArr);
const dulist = new Set(duplicate)
const list = [...dulist]
for ( let k = 1; k < list.length; k ++){
if ( list[k-1] + 1 === list[k] ){
ans += 1
}
}
if ( (lines[0][1]-lines[0][0])+(lines[0][1]-lines[0][0])+(lines[0][1]-lines[0][0]) === max - min ) return 0;
console.log(dulist)
return ans
}
function solution(lines) {
let line = new Array(200).fill(0);
lines.forEach(([a, b]) => {
for(; a < b; a++) line[a+100]++;
//;initialization블럭 생략
});
return line.reduce((a, c) => c > 1 ? a + 1 : a, 0)
}