문제(출처: 프로그래머스)

선분 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

+ Recent posts