프로그래머스 Lv.0 [겹치는 선분의 길이] (정답률 하위 TOP 10)

세나정·2023년 4월 23일
0

팁!

Array.flat() => 이차원 배열을 1차원 배열로 나타내줌
[ [1,2], [3,4], [5,7]] -> [1, 2, 3, 4, 5, 7]

내 풀이

내가 생각하고 있던 풀이법이 맞았다.

0으로 차있는 배열을 선언한 뒤 각 인덱스 (길이2짜리)에 속하는 부분을 +1 해줌
그러다가 2이상이 된 경우 그게 겹치는 애이므로 2이상으로 이루어진 배열의 길이를 return

function solution(lines) {
    const ans = new Array(200).fill(0)
    
    
    for (i=0; i<3; i++) {
    	// 반복물을 돌며 한 줄의 최소값을 저장
        left = lines[i][0]
        // 최대값을 저장
        right = lines[i][1]
        
        // 음수를 위한 +100 인덱스이기 문에  +100 (b는 100까지이니)
        for(j=left; j<right; j++) {
            ans[j+100] += 1
        }
        
    }
    return ans.filter(v => v>=2).length
    
}

생각했던 풀이방법은 맞았지만 2차원 배열의 값들을 어떻게 선분에 표시하는지가 어려웠던 문제..
최소, 최대를 구하는 것이 아니라 각 속 배열의 좌측값과 우측값을 저장한 후
그 길이에 맞춰 0으로 채워둔 배열에 +1씩을 해주면 됐다..

profile
기록, 꺼내 쓸 수 있는 즐거움

0개의 댓글