개발 로그/알고리즘
1030. Matrix Cells in Distance Order.cpp
CyberSoak
2021. 11. 19. 11:30
⭐ discussion에서 배운 것, 두 가지.
res.push_back({d,d,d,d,d,d,d,d});
sort(res.begin(), res.end(), []vector<int>a,vector<int>b);

//multimap 나의 풀이
class Solution {
public:
vector<vector<int>>res;
vector<vector<int>> allCellsDistOrder(int rows, int cols, int rCenter, int cCenter) {
multimap<int,vector<int>>m;
for(int i =0; i<rows; i++){
for(int j =0; j<cols; j++){
vector<int>tmp;
tmp.push_back(i);
tmp.push_back(j);
m.insert(pair<int,vector<int>>(abs(rCenter-i)+abs(cCenter-j),tmp));
}
}
for(auto it : m){
res.push_back(it.second);
}
return res;
}
};
//discusstion 풀이
class Solution {
public:
vector<vector<int>> allCellsDistOrder(int R, int C, int r0, int c0) {
vector<vector<int>> ans;
for (int i = 0; i < R; i++)
for (int j = 0; j < C; j++)
ans.push_back({i, j, abs(i - r0) + abs(j - c0)});
sort(ans.begin(), ans.end(), [](vector<int>& c1, vector<int>& c2) {
return c1[2] < c2[2];
});
for (vector<int>& d: ans)
d.pop_back();
return ans;
}
};