[LeetCode] Cells with Odd Values in a Matrix

아르당·2026년 4월 13일

LeetCode

목록 보기
259/303
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

모든 요소가 0으로 초기화된 m x n 행렬이 있다. 또한 각 indices[i] = [ri, ci]가 행렬에 대한 증가 연산을 수행할 0부터 시작하는 인덱스의 위치를 나타내는 2차원 배열 indices가 있다.

각 위치 indices[i]는 아래의 두 가지 작업을 수행한다.

  1. ri 행의 모든 셀 값을 증가시킨다.
  2. ci 열의 모든 셀 값을 증가시킨다.

m, n, indices가 주어졌을 때, indices의 모든 위치를 증가시키고 행렬에서 홀수를 갖는 셀의 개수를 반환해라.

Example

#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]]가 된다. 마지막 행렬에 홀수는 없다.

Constraints

  • 1 <= m, n <= 50
  • 1 <= indices.length <= 100
  • 0 <= ri < m
  • 0 <= ci < n

Solved

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;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글