C++:: 프로그래머스 < 가장 큰 정사각형 찾기 >

jahlee·2023년 8월 14일
0

프로그래머스_Lv.2

목록 보기
99/106
post-thumbnail

2x2 정사각형을 찾는다면 주변값에서 가장 작은 값+1로 자신의 값을 갱신하여 구하는 방식이다. 방식을 알면 어렵지않다

#include <vector>

using namespace std;

int solution(vector<vector<int>> board) {
    int answer = board[0][0], row = board.size(), col = board[0].size();// 1x1배열일 때 예외 처리떄문에 answer 초기값 설정
    for (int i=1; i<row; i++) {
        for (int j=1; j<col; j++) {
            if (board[i][j] ) {// 0이 아니라면
                board[i][j] = min(min(board[i-1][j], board[i][j-1]), board[i-1][j-1]) + 1;// 주변값중 가장 작은값 + 1
                answer = max(answer, board[i][j]);// 가장 큰 값 저장
            }
        }
    }
    return answer*answer;
}

이해하기 쉽게 예시를 들자면

0111
1111
1111
0010

와 같은 배열이 들어오면 다음과 같은 결과로 나온다.

0111
1122
1223
0010

이중 가장 큰 값을 리턴해 주면 되는 것이다.

0개의 댓글