일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 코딩테스트
- 매트랩
- 조지아텍
- LV1
- C++
- 머신러닝
- 방송통신대학교
- Plotting
- 딥러닝
- 온라인석사
- 마니토바
- 컴퓨터과학과
- MATLAB
- 주정부이민
- 알고리즘
- LAA
- 방통대
- omscs
- 선형대수
- machine learning
- 기본
- cpp
- mpnp
- zeros
- 캐나다 영주권
- 프로그래머스
- leetcode
- EOI
- 개발자
- Deep learning
Archives
- Today
- Total
Krononberg
861. Score After Flipping Matrix.cpp 본문
첫 greedy 문제
class Solution {
public:
void flipRow(vector<vector<int>>& grid,int m){
for(int j =0; j<grid[0].size();j++){
grid[m][j]^=1;
}
}
void flipCol(vector<vector<int>>& grid, int n){
for(int i =0; i<grid.size(); i++){
grid[i][n]^=1;
}
}
int gridSum(vector<vector<int>>& grid){
int res =0;
for(int i=0; i<grid.size(); i++){
for(int j =0; j<grid[0].size(); j++){
if(grid[i][j]==1)
res += pow(2,grid[0].size()-j-1);
}
}
return res;
}
int matrixScore(vector<vector<int>>& grid) {
int m = grid.size();
int n = grid[0].size();
if (grid.size()==1) return 1;
for(int i =0; i<m; i++){
if(grid[i][0]!= 1){
flipRow(grid,i);
}
}
for(int j=1; j<n; j++){
int one =0;
int zero =0;
for(int i =0; i<m; i++){
if(grid[i][j]==1)one++;
else zero++;
}
if(one < zero) {
flipCol(grid,j);
}
}
return gridSum(grid);
}
};
'개발 로그 > 알고리즘' 카테고리의 다른 글
1850. Minimum Adjacent Swaps to Reach the Kth Smallest Number.cpp (0) | 2021.10.17 |
---|---|
1472. Design Browser History.cpp (0) | 2021.10.15 |
1325. Delete Leaves With a Given Value.cpp (0) | 2021.10.12 |
701. Insert into a Binary Search Tree.cpp (0) | 2021.10.08 |
1641. Count Sorted Vowel Strings.cpp (0) | 2021.10.08 |