안녕하십니까. Eun🦆입니다.
풀이법 입니다.
#include <iostream>
#include<vector>
using namespace std;
//정사각형을 어떻게 찾는지 간단하게 설명하자면
//배열의 [1][1]부터 반복문을 돌린다. (첫 번째 행, 첫 번째 열 무시, 이유는 2번 참고)
//현재 값이 1일 경우, 좌측값, 상단값, 좌측상단값 중 가장 작은 값의 +1 한 값을 현재 값으로 할당.
//배열이 끝날 때 까지 반복.
//배열의 가장 큰 값이 현재 배열의 가장 큰 정사각형의 값이 된다.
int solution(vector<vector<int>> board)
{
int answer = 0;
int MAX = 0;
if(board.size() > 1 & board[0].size() > 1)
{
for(int y=1;y<board.size();y++)
{
for(int x=1;x<board[0].size();x++)
{
//printf("board[%d][%d]=%d\n",y,x,board[y][x]);
if(board[y][x]==1)
{
board[y][x] = min(min(board[y-1][x-1],board[y-1][x]),board[y][x-1])+1;
if(answer < board[y][x])
answer = board[y][x];
}
}
}
}
else
{
for(int y=0;y<board.size();y++)
{
for(int x=0;x<board[0].size();x++)
{
if(answer < board[y][x])
answer = board[y][x];
}
}
}
return answer*answer;
}
'개발 > Coding Test' 카테고리의 다른 글
[프로그래머스 C++ Lv2] 다음 큰 숫자 (0) | 2022.06.06 |
---|---|
[프로그래머스 C++ Lv2] 올바른 괄호 (0) | 2022.06.06 |
[프로그래머스 C++ Lv2] 카펫 (0) | 2022.06.06 |
[프로그래머스 C++ Lv2] 위장 (0) | 2022.06.06 |
[프로그래머스 C++ Lv2] 전화번호 목록 (0) | 2022.06.06 |
댓글