문제(출처: 프로그래머스)
선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines 가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요.
▶ 내가 푼 방식
//내가 작성한 코드
▶ 다른 유저가 푼 방식
// 유저 1
function solution(lines) {
const start = Math.min(...lines.flat())
const end = Math.max(...lines.flat())
const lst = [...Array(end-start)].fill(0)
lines.forEach(el => {
for(let i=el[0];i<el[1];i++){
lst[i-start]+=1
}
})
return lst.reduce((a,c)=> c>1 ? a+1 : a ,0)
}
이 코드는 임의로 최대 길이와 같은 빈 배열을 생성
주어진 직선에 해당하는 구간에 +1 을 해주고
1 이상인 위치가 겹치는 부분이므로
1이상인 부분만 카운트해서 총 겹치는 구간의 길이를 구함
- 해당 코드 출처는 블로그 https://supersfel.tistory.com/entry/JS-%EA%B2%B9%EC%B9%98%EB%8A%94-%EC%84%A0%EB%B6%84%EC%9D%98-%EA%B8%B8%EC%9D%B4