https://school.programmers.co.kr/learn/courses/30/lessons/12905
๋ฌธ์ ์ค๋ช
1์ 0๋ก ์ฑ์์ง ํ(board)๊ฐ ์์ต๋๋ค. ํ 1์นธ์ 1 x 1 ์ ์ ์ฌ๊ฐํ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ํ์์ 1๋ก ์ด๋ฃจ์ด์ง ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ์ ์ฐพ์ ๋์ด๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์. (๋จ, ์ ์ฌ๊ฐํ์ด๋ ์ถ์ ํํํ ์ ์ฌ๊ฐํ์ ๋งํฉ๋๋ค.)
์๋ฅผ ๋ค์ด
๊ฐ ์๋ค๋ฉด ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ์

๊ฐ ๋๋ฉฐ ๋์ด๋ 9๊ฐ ๋๋ฏ๋ก 9๋ฅผ ๋ฐํํด ์ฃผ๋ฉด ๋ฉ๋๋ค.
๋ด ํ์ด 1
์ซ์ 1์ผ๋๋ง๋ค ์ต๋ ํฌ๊ธฐ๋ฅผ ๊ฒ์ํ๋ค.
#include <iostream> #include<vector> using namespace std; vector<vector<int>> Board; int CheckSize(int row, int col) { int size = 0; for (int s = 0; s < Board.size(); ++s) { bool isSquare = true; if (row + s >= Board.size() || col + s >= Board[0].size()) break; for (int n = 0; n <= s; ++n) { if (0 == Board[row + n][col + s] || 0 == Board[s + row][col + n]) { isSquare = false; break; } } if (!isSquare) break; size = s; } return size+1; } int solution(vector<vector<int>> board) { int answer = 0; Board = board; for (int r = 0; r < board.size(); ++r) for (int c = 0; c < board[0].size(); ++c) { if (board[r][c] == 1) { if (r + answer >= board.size() || c + answer >= board[0].size()) continue; answer = max(CheckSize(r, c), answer); } } answer *= answer; return answer; }
์ ํํ์ง๋ง ์๊ฐ ๋ณต์ก๋์์ ์คํจํ๋ค.

๋ด ํ์ด 2
DP
์ ํ์
board[i][j] = 1 + min({board[i-1][j-1], board[i-1][j], board[i][j-1]});
ํ์ฌ ์์น์์ ์ข์, ์ข, ์ ์์ญ ์ค์ ๊ฐ์ฅ ์์ ์+1์ ํด๋๊ฐ๋ฉด์ ์ต๋ ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ์ ์ฐพ์ ์ ์๋ค.

์ด๋ฐ ์์ผ๋ก 1, 1๋ถํฐ ์ญ ์งํํ๋ค๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ชจ์ต์ด ๋๋ค.

์ด์ค์์ ๊ฐ์ฅ ํฐ ๊ฐ์ด ์ต๋ ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ์ด๋ค.
#include <iostream> #include <vector> #include <algorithm> using namespace std; int solution(vector<vector<int>> board) { int answer = board[0][0]; int r = board.size(); int c = board[0].size(); for(int i=1;i<r;i++) { for(int j=1;j<c;j++) { if(board[i][j]==1){ board[i][j] = 1 + min({board[i-1][j-1],board[i-1][j],board[i][j-1]}); answer = max(answer,board[i][j]); } } } return answer*answer; }

'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค]level.3 - ์นด๋ ์ง ๋ง์ถ๊ธฐ(C++) (1) | 2023.10.05 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค]level.3 - ๋ถ๋๋ณต๊ท (C++) (0) | 2023.10.04 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.3 - ๋ค๋จ๊ณ ์นซ์ ํ๋งค (C++) (0) | 2023.09.26 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ์ซ์ ๋ณํํ๊ธฐ (C++) (0) | 2023.09.22 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ๋ฐฉ๋ฌธ ๊ธธ์ด (C++) (0) | 2023.09.21 |