FrontEnd/프로그래머스

[JS] 겹치는 선분의 길이

728x90

결국 선분들을 그릴때 첫번째 선분과 마지막 선분이 존재하게 되는데, 이를 이용해서 해결하였다.

start에 최초로 그려지는 선분의 시작점을,

end에 마지막에그려지는 선분의 종단점을 입력해두고 그 차이만큼 0으로 채워진 리스트를 만들어준다.

 

이후 각 선분들의 길이를 idx에 대입하여 1씩 더해준다.

 

선분들을 다 더해주었을때 리스트에 2 이상인 부분들은 겹친부분이 된다.

 

 

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)
}
728x90

'FrontEnd > 프로그래머스' 카테고리의 다른 글

로그인 성공  (0) 2023.03.13
[JS] 특이한 정렬  (0) 2023.03.12
[JS] 저주의 숫자 3  (0) 2023.03.02
[JS] 안전지대  (0) 2023.02.28
[JS] 캐릭터의 좌표  (0) 2023.02.28