hwooo
LeetCode (C/C++) 2352. Equal Row and Column Pairs 본문
https://leetcode.com/problems/equal-row-and-column-pairs/description/
풀이
딱히 다른 풀이가 떠오르지 않아 모든 원소를 일일이 비교하는 방식으로 풀었다
답지 풀이
한 행을 key 값으로 하는 map을 사용, 해당 map에 하나의 열을 key로 가진 원소가 있는지 확인.있다면 그 행과 열은 동일한 값이므로 해당 행의 개수를 답에 추가
답지 풀이 방식이 더 빨랐다. map의 key로 값을 비교할 생각을 해보지 못 함..
코드 1
class Solution {
public:
int equalPairs(vector<vector<int>>& grid) {
int size = grid.size();
int cnt = 0;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
int idx = 0;
// i번째 행과 j번째 열의 값을 모두 비교
while (idx < size && grid[i][idx] == grid[idx][j])
idx++;
// 만약 모든 값이 같다면 cnt++
if (idx == size)
cnt++;
}
}
return cnt;
}
};
코드 2 (답지)
class Solution {
public:
int equalPairs(vector<vector<int>>& grid) {
int size = grid.size();
int cnt = 0;
// 한 행을 key로 하는 map 생성
map<vector<int>, int> m;
for (int i = 0; i < size; i++)
m[grid[i]]++;
for (int i = 0; i < size; i++) {
// 한 열을 key 값으로 생성
vector<int> col(size);
for (int j = 0; j < size; j++)
col[j] = grid[j][i];
// map에 해당 벡터를 key로 하는 원소가 존재한다면, 해당 원소의 개수 더함
if (m.count(col))
cnt += m[col];
}
return cnt;
}
};
'Study > Algorithm' 카테고리의 다른 글
LeetCode (C/C++) 164. Maximum Gap (0) | 2024.10.16 |
---|---|
프로그래머스 (C/C++) 49189 : 가장 먼 노드 (0) | 2024.10.15 |
LeetCode (C/C++) 1277. Count Square Submatrices with All Ones (0) | 2024.10.15 |
프로그래머스 (C/C++) 258712 : 가장 많이 받은 선물 (0) | 2024.06.14 |
프로그래머스 (C/C++) 17677 : 2018 KAKAO BLIND RECRUITMENT [1차] 뉴스 클러스터링 (0) | 2024.06.11 |