개발/알고리즘

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

송디 2024. 4. 22. 11:54

출처 : 프로그래머스

■ 해결 방법

처음에는 점끼리 겹치는 선분의 길이를 더해서 구하려고 했으나, 세개의 선분이 동시에 겹칠 때를 계산하기 위해서 너무 복잡해졌다. 알고리즘은 더 효율적인 방법으로 모색해야 하므로 다른 방법을 고민해보았다. 

색칠로 비유해보자면 일직선에 1 단위로 칸이 나누어져있고 해당 칸에 색칠을 해준다는 느낌으로 생각을 해보았다. 

그러면 여러번 색칠 된 것이 답이 될 것이다. 

길이가 200인 일차원 배열을 선언해주고 값을 0으로 채웠다. 이후 lines의 배열을 순회하며 일차원 배열의 값을 채워갔다. 

예를 들어, lines[0]의 값이 [0, 1] 일 때, 일차원 배열 line의 값은 line[0] =1이 된다. 

이런식으로 line 배열의 값을 채우고 마지막에 1보다 큰 값을 카운트 해주면 된다. 

 

■ 코드 


function solution(lines) {
    var answer = 0;
    var line = [];
    for (var i = 0; i < 200; i++) {
        line.push(0);
    }   
    for(let i = 0; i < lines.length ;i++){
       for(let j = lines[i][0]; j < lines[i][1]; j++){
           line[j+100]++;
       }
    }
    line.forEach((element)=>{ if(element > 1) answer++;})
    return answer;
}
728x90