[LeetCode] The K Weakest Rows in a Matrix

준규·2023년 1월 30일
0

1.문제


You are given an m x n binary matrix mat of 1's (representing soldiers) and 0's (representing civilians). The soldiers are positioned in front of the civilians. That is, all the 1's will appear to the left of all the 0's in each row.

A row i is weaker than a row j if one of the following is true:

  • The number of soldiers in row i is less than the number of soldiers in row j.
  • Both rows have the same number of soldiers and i < j.

Return the indices of the k weakest rows in the matrix ordered from weakest to strongest.


m x n 2차원 배열이 주어지고 정수 k가 주어질 때 각 row의 1의 갯수가 적은 순으로 k개 row의 인덱스를 배열형태로 리턴하는 문제이다. 만약 1의 갯수가 같다면 row의 인덱스가 작은 값이 앞으로 와야한다.


Example 1

Input: mat = 
[[1,1,0,0,0],
 [1,1,1,1,0],
 [1,0,0,0,0],
 [1,1,0,0,0],
 [1,1,1,1,1]], 
k = 3
Output: [2,0,3]
Explanation: 
The number of soldiers in each row is: 
- Row 0: 2 
- Row 1: 4 
- Row 2: 1 
- Row 3: 2 
- Row 4: 5 
The rows ordered from weakest to strongest are [2,0,3,1,4].

Example 2

Input: mat = 
[[1,0,0,0],
 [1,1,1,1],
 [1,0,0,0],
 [1,0,0,0]], 
k = 2
Output: [0,2]
Explanation: 
The number of soldiers in each row is: 
- Row 0: 1 
- Row 1: 4 
- Row 2: 1 
- Row 3: 1 
The rows ordered from weakest to strongest are [0,2,3,1].

Constraints:

  • m == mat.length
  • n == mat[i].length
  • 2 <= n, m <= 100
  • 1 <= k <= m
  • matrix[i][j] is either 0 or 1.

2.풀이

  1. mat를 1의 갯수의 오름차순으로 정렬한다 (1의 갯수가 같다면 index의 오름차순으로)
  2. k 만큼 index를 배열에 넣어 리턴한다.

/**
 * @param {number[][]} mat
 * @param {number} k
 * @return {number[]}
 */
const kWeakestRows = function (mat, k) {
  const result = [];

  // mat 각 row의 1의 갯수를 구한다
  mat = mat.map((item) => item.reduce((prev, curr) => prev + curr, 0));

  // mat의 각 row의 1의 개수와 인덱스를 [index , row의 개수] 꼴로 만든다
  mat = mat.map((item, index) => [index, item]);

  // 1의 갯수의 오름차순으로 정렬한다
  mat = mat.sort((a, b) => a[1] - b[1]);

  // k번 만큼 result에 push
  for (let i = 0; i < k; i++) {
    result.push(mat[i][0]);
  }

  return result;
};

3.결과

profile
안녕하세요 :)

0개의 댓글