From 3fae6debbdff1f593cb8aa46746eef46f56d75f5 Mon Sep 17 00:00:00 2001 From: InSange Date: Sun, 11 Aug 2024 01:52:57 +0900 Subject: [PATCH] 2024-08-11 Magic Squares In Grid --- InSange/README.md | 1 + .../840_Magic Squares In Grid.cpp" | 55 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 "InSange/\354\210\230\355\225\231/840_Magic Squares In Grid.cpp" diff --git a/InSange/README.md b/InSange/README.md index 13400de..9513d03 100644 --- a/InSange/README.md +++ b/InSange/README.md @@ -27,6 +27,7 @@ | 23차시 | 2024.08.03 | 슬라이딩 윈도우 | [Minimum Swaps to Group All 1's Together 2](https://leetcode.com/problems/minimum-swaps-to-group-all-1s-together-ii/) | [#23](https://github.com/AlgoLeadMe/AlgoLeadMe-8/pull/82)] | 24차시 | 2024.08.04 | BFS | [트리](https://www.acmicpc.net/problem/1068) | [#24](https://github.com/AlgoLeadMe/AlgoLeadMe-8/pull/83)] | 25차시 | 2024.08.10 | BFS | [Minimum Height Trees](https://leetcode.com/problems/minimum-height-trees/) | [#25](https://github.com/AlgoLeadMe/AlgoLeadMe-8/pull/87)] +| 26차시 | 2024.08.11 | 수학 | [Magic Squares In Grid](https://leetcode.com/problems/magic-squares-in-grid/) | [#26](https://github.com/AlgoLeadMe/AlgoLeadMe-8/pull/89)] --- https://leetcode.com/problems/robot-collisions/ diff --git "a/InSange/\354\210\230\355\225\231/840_Magic Squares In Grid.cpp" "b/InSange/\354\210\230\355\225\231/840_Magic Squares In Grid.cpp" new file mode 100644 index 0000000..f830c03 --- /dev/null +++ "b/InSange/\354\210\230\355\225\231/840_Magic Squares In Grid.cpp" @@ -0,0 +1,55 @@ +#include + +using namespace std; + +class Solution { +public: + bool Check(int r, int c, vector>& grid) + { + vector isCheck(10, false); + + for (int i = 0; i < 3; i++) + { + for (int j = 0; j < 3; j++) + { + int num = grid[r + i][c + j]; + if (num < 1 || num > 9) return false; + if (isCheck[num]) return false; + isCheck[num] = true; + } + } + + int standard_num = grid[r][c] + grid[r + 1][c + 1] + grid[r + 2][c + 2]; + if (standard_num != grid[r][c + 2] + grid[r + 1][c + 1] + grid[r + 2][c]) return false; + + for (int i = 0; i < 3; i++) + { + if (standard_num != (grid[r + i][c] + grid[r + i][c + 1] + grid[r + i][c + 2])) return false; + } + + for (int i = 0; i < 3; i++) + { + if (standard_num != (grid[r][c + i] + grid[r + 1][c + i] + grid[r + 2][c + i])) return false; + } + + return true; + } + + int numMagicSquaresInside(vector>& grid) { + int col = grid[0].size(), row = grid.size(); + + if (col < 3 || row < 3) return 0; + + int ans = 0; + + for (int i = 0; i < row - 2; i++) + { + for (int j = 0; j < col - 2; j++) + { + if (Check(i, j, grid)) ans++; + } + } + + return ans; + } +}; \ No newline at end of file