전공공부/코딩테스트
(c++) 프로그래머스 "가장 큰 사각형 찾기"
시아나
2022. 4. 12. 23:40
https://programmers.co.kr/learn/courses/30/lessons/12905#
코딩테스트 연습 - 가장 큰 정사각형 찾기
[[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]] 9
programmers.co.kr
나의풀이
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<vector<int>> board)
{
int answer = 0;
bool one = false;
if (board.size() == 1 && board[0].size() == 1) {
return board[0][0];
}
for (int i = 1; i < board.size(); i++) {
for (int k = 1; k < board[0].size(); k++) {
vector<int> tmp = { board[i - 1][k] ,board[i][k - 1] ,board[i - 1][k - 1] };
if (*max_element(tmp.begin(), tmp.end())) one = true;
int minest = (*min_element(tmp.begin(), tmp.end())) + 1;
board[i][k] = board[i][k] == 0 ? 0 : minest;
if (answer < board[i][k]) answer = board[i][k];
}
}
if (answer == 0 && one) return 1;
return answer * answer;
}