문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
모든 요소가 0으로 초기화된 m x n 행렬이 있다. 또한 각 indices[i] = [ri, ci]가 행렬에 대한 증가 연산을 수행할 0부터 시작하는 인덱스의 위치를 나타내는 2차원 배열 indices가 있다.
각 위치 indices[i]는 아래의 두 가지 작업을 수행한다.
m, n, indices가 주어졌을 때, indices의 모든 위치를 증가시키고 행렬에서 홀수를 갖는 셀의 개수를 반환해라.
#1
Input: m = 2, n = 3, indices = [[0, 1], [1, 1]]
Output: 6
Explanation: matrix = [[0, 0, 0], [0, 0, 0]]으로 시작한다.
첫번째 증가를 적용한 후 [[1, 2, 1], [0, 1, 0]]이 된다.
마지막 행렬은 [[1, 3, 1], [1, 3, 1]]이 되고, 홀수 6개를 가진다.
#2
Input: m = 2, n = 2, indices = [[1, 1], [0, 0]]
Output: 0
Explanation: 마지막에 matrix = [[2, 2], [2, 2]]가 된다. 마지막 행렬에 홀수는 없다.
class Solution {
public int oddCells(int m, int n, int[][] indices) {
int[] rows = new int[m];
int[] cols = new int[n];
for(int[] index : indices){
rows[index[0]]++;
cols[index[1]]++;
}
int oddRows = 0;
int oddCols = 0;
for(int r : rows){
if(r % 2 == 1){
oddRows++;
}
}
for(int c : cols){
if(c % 2 == 1){
oddCols++;
}
}
return oddRows * (n - oddCols) + (m - oddRows) * oddCols;
}
}