Coding Test/항해99 - 코테 스터디 2기

99클럽 코테 스터디 38일차 TIL(6월 27일) + 자료구조 Heap

holajjm 2024. 6. 27. 14:56

[문제 링크]

https://leetcode.com/problems/the-k-weakest-rows-in-a-matrix/

 

[문제 사고]

주어진 조건에 따라 값을 오름차순으로 정렬한 후 해당 인덱스를 구한 후 일정 범위까지의 배열을 반환한다.

 

[문제 해결]

1. 정답을 넣을 빈 배열 result를 생성한다.
2. mat 배열을 순회하며 내부 배열을 1의 개수로 변환한다.
3. 변환된 배열을 순회하며 인덱스와 요소를 한 쌍의 배열로 만들어주고 요소를 오름차순으로 정렬한 후 인덱스 값만 result 배열에 넣어준다.
4. result 배열을 k까지 자른 후 반환한다.

 

[작성 코드]

/**
 * @param {number[][]} mat
 * @param {number} k
 * @return {number[]}
 */
var kWeakestRows = function(mat, k) {
    const result = [];
    const arr = mat.map(e => e = e.filter(e => e === 1).length);
    const answer = arr.map((e,i) => e = [i,e]).sort((a,b) => a[1]-b[1]).map(e => result.push(e[0]))
    return result.splice(0,k)
};

 

[문제 회고]

문제 자체가 어렵지는 않았지만 heap을 구현하지는 못했다. 그래서 불필요한 반복과 복잡한 method를 많이 사용하게 되었다. 효율성과 메모리를 고려해서 heap을 사용해서 다시 풀어볼 예정이다.