넘치게 채우기
[LeetCode] 2482. Difference Between Ones and Zeros in Row and Column 본문
[LeetCode] 2482. Difference Between Ones and Zeros in Row and Column
riveroverflow 2023. 12. 14. 12:23https://leetcode.com/problems/difference-between-ones-and-zeros-in-row-and-column/description/
leetcode - Difference Between Ones and Zeros in Row and Column
문제 유형 : 행렬
문제 난이도 : Medium
문제
You are given a 0-indexed m x n binary matrix grid.
A 0-indexed m x n difference matrix diff is created with the following procedure:
- Let the number of ones in the ith row be onesRow[i].
- Let the number of ones in the jth column be onesCol[j].
- Let the number of zeros in the ith row be zerosRow[i].
- Let the number of zeros in the jth column be zerosCol[j].
- diff[i][j] = onesRow[i] + onesCol[j] - zerosRow[i] - zerosCol[j]
Return the difference matrix diff.
당신은 바이너리 행렬 grid를 m*n의 크기로 받습니다.
m*n의 크기의 diff라는 행렬이 있다고 합시다.
값은 이렇게 정해집니다.
onesRow[i]를 i번째행의 1의 개수라고 합시다.
onesCol[i]를 j번째열의 0의 개수라고 합시다.
zerosRow[i]를 i번째행의 1의 개수라고 합시다.
zerosRow[i]를 j번째열의 0의 개수라고 합시다.
diff[i][j] = onesRow[i] + onesCol[j] - zerosRow[i] - zerosCol[j]
diff행렬을 반환하시오.
풀이
저 조건대로 구해주면 된다.
반복적인 연산을 피하기 위해, onesRow,Col, zerosRow,Col을 각각 만들어준다.
이차원배열을 순회해주면서 먼저 4개의 행렬을 완성해준다.
for i in range(m):
for j in range(n):
만약 grid[i][j]가 1이면 onesRow[i],Col[j]에 1씩 누적
아니라면 zerosRow,Col에 1씩 누적...
그리고 diff[i][j]를 채워주면 된다.
코드
C++
class Solution {
public:
vector<vector<int>> onesMinusZeros(vector<vector<int>>& grid) {
const int m = grid.size();
const int n = grid[0].size();
vector<vector<int>> diff(m, vector<int>(n, 0));
vector<int> row_one(m, 0);
vector<int> col_one(n, 0);
vector<int> row_zero(m, 0);
vector<int> col_zero(n, 0);
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
if(grid[i][j]) {
row_one[i]++;
col_one[j]++;
} else {
row_zero[i]++;
col_zero[j]++;
}
}
}
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
diff[i][j] = row_one[i] + col_one[j] - row_zero[i] - col_zero[j];
}
}
return diff;
}
};
'PS > LeetCode' 카테고리의 다른 글
[LeetCode] 후기: 100 Days Badge 2023! (0) | 2023.12.16 |
---|---|
[LeetCode] 1436. Destination City (0) | 2023.12.15 |
[LeetCode] 1582. Special Positions in a Binary Matrix (0) | 2023.12.13 |
[LeetCode] 1464. Maximum Product of Two Elements in an Array (0) | 2023.12.12 |
[LeetCode] 1287. Element Appearing More Than 25% In Sorted Array (0) | 2023.12.11 |