Post

leetcode(리트코드)73-Set Matrix Zeroes

leetcode(리트코드)73-Set Matrix Zeroes

leetcode 73 - Set Matrix Zeroes 문제입니다.

1. 문제

https://leetcode.com/problems/set-matrix-zeroes/


2. Input , Output


3. 분류 및 난이도

Medium 난이도 문제입니다.
https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-75-LeetCode-Questions-to-Save-Your-Time-OaM1orEU에서 추천한 문제입니다.


4. 문제 해석

  • 0으로 들어온 값의 행과 열을 모두 0으로 바꿔버립니다.

5. code

c++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class Solution {
public:
    void fillrow(vector<vector<int>>& matrix,int row,int col){
        for(int i =0;i<col;++i){
            matrix[row][i] =0;
        }
    }
    void fillcol(vector<vector<int>>& matrix,int row,int col){
        for(int i = 0;i<row;++i)
            matrix[i][col]=0;
    }
    
    void setZeroes(vector<vector<int>>& matrix) {
        int rowsize = matrix.size();
        int colsize = matrix[0].size();
        
        bool row[201];
        bool col[201];
        queue<pair<int,int>> q;
        memset(row,false,sizeof(row));
        memset(col,false,sizeof(col));
        //돌면서 0인 값은 queue에 넣음.
        for(int i = 0 ;i<rowsize;++i){
            for(int j = 0; j<colsize; ++j){
                if(matrix[i][j]==0 ){
                    q.push(make_pair(i,j));    
                }
            }
        }
        
        while(!q.empty()){
            int x = q.front().first;
            int y = q.front().second;
            q.pop();
            if(row[x]==false){
                fillrow(matrix,x,colsize);
                row[x]=true;
            }
            if(col[y] == false){
                fillcol(matrix,rowsize,y);
                col[y] =true;
            }
        }
    }
};

6. 결과 및 후기, 개선점

코드에 대한 설명이 필요하신 분은 댓글을 달아주세요.!!

c++ 16ms 40%

This post is licensed under CC BY 4.0 by the author.