🔥문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/120876
🔥풀이
문제의 핵심은 겹치는 길이를 count 하는 것이다. 나는 선분의 시작점과 끝점이 정수로 주어진다는 사실을 인지하여 정수사이의 수를 이용했다. 예를들어 [1,3]과 [2,4] 라는 선분이 주어진다면 우리는 각각의 선분 영역에 1.5, 2.5, 3.5 중 몇개가 포함되어 있는지 확인하면 된다.
위와같은 원리를 이용해 모든 선분의 가장작은 시작점과 가장 큰 끝점을 파악하고 그 사이에서 확인해야 할 .5 단위의 수를 순회하면서 중복된 길이를 확인하였다.
function solution(lines) {
let [[s1,e1],[s2,e2],[s3,e3]] = lines
let start = Math.min(s1,s2,s3)
let end = Math.max(e1,e2,e3)
let dup_length = 0
for(let i=start+0.5; i<=end-0.5; ++i){
let count = 0
for(const [s,e] of lines){
if(i>s&&i<e){
++count
}
}
if(count>=2){ ++ dup_length}
}
return dup_length;
}
'알고리즘' 카테고리의 다른 글
프로그래머스[JS] > [3차] n진수 게임 (0) | 2024.08.05 |
---|---|
프로그래머스[JS] > 정수 삼각형 (0) | 2024.08.04 |
프로그래머스[JS] > 쿼드압축 후 개수 세기 (0) | 2024.07.15 |
프로그래머스[JS] > 네트워크 (0) | 2024.07.13 |
프로그래머스 [JS] > 소수찾기 (0) | 2024.07.07 |