■ 해결 방법
처음에는 점끼리 겹치는 선분의 길이를 더해서 구하려고 했으나, 세개의 선분이 동시에 겹칠 때를 계산하기 위해서 너무 복잡해졌다. 알고리즘은 더 효율적인 방법으로 모색해야 하므로 다른 방법을 고민해보았다.
색칠로 비유해보자면 일직선에 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
'개발 > 알고리즘' 카테고리의 다른 글
프로그래머스_개인정보 수집 유효기간 (0) | 2024.05.02 |
---|---|
프로그래머스_[PCCP 기출문제] 1번 / 붕대 감기 (1) | 2024.05.01 |
프로그래머스_평행 (0) | 2024.04.19 |
프로그래머스_구명보틀 (0) | 2021.08.26 |
프로그래머스위클리챌린지_직업군 추천하기(4주차) (0) | 2021.08.26 |