강의로 돌아가기
장준혁

테스크케이스 6번만 통과를 못하네요.. ㅠㅠ

include

include

include

using namespace std;

int solution(vector> board){
int maxi = 0;
if(board[0].size() <= 1 || board.size() <= 1){
for(int i = 0; i < board[0].size(); i++){
for(int j = 0; j < board.size(); j++){
maxi = max(maxi, board[j][i]);
}
}
}

for(int i = 0; i < board[0].size() - 1; i++){
    for(int j = 0; j < board.size() - 1; j++){
        if(board[j][i] >= 1 && board[j + 1][i] >= 1 && board[j][i + 1] >= 1 && board[j + 1][i + 1] >= 1){   
            board[j + 1][i + 1] = min({board[j][i], board[j + 1][i], board[j][i + 1]}) + 1;
            if(maxi < board[j + 1][i + 1]) maxi = board[j + 1][i + 1];
        } 
    }
}
return maxi * maxi;

}

저는 좌측 상단부터 오른쪽 상단으로 정사각형을 체크해봤는데요... 테스트케이스 6번만 통과하지 못하네요 ㅠㅠ..

작성중인 코드―solution.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int solution(vector<vector<int>> board){
    int maxi = 0;
    if(board[0].size() <= 1 || board.size() <= 1){
        for(int i = 0; i < board[0].size(); i++){
            for(int j = 0; j < board.size(); j++){
                maxi = max(maxi, board[j][i]);
            }
        }
    }

    for(int i = 0; i < board[0].size() - 1; i++){
        for(int j = 0; j < board.size() - 1; j++){
            if(board[j][i] >= 1 && board[j + 1][i] >= 1 && board[j][i + 1] >= 1 && board[j + 1][i + 1] >= 1){   
                board[j + 1][i + 1] = min({board[j][i], board[j + 1][i], board[j][i + 1]}) + 1;
                if(maxi < board[j + 1][i + 1]) maxi = board[j + 1][i + 1];
            } 
        }
    }
    return maxi * maxi;
}
  • dlwns97

    테스트 케이스 6번은 구현하신 프로그램으로 해결하면 maxi값이 0이 나올텐데 [[1,0],[0,0]] 으로 생각하시면 답은 1이 됩니다. 기본 maxi 값을 1로 설정하시면 해결 할 수 있습니당 물론 이 경우에 8번 케이스가 실패할텐데 8번은 전부다 0인 케이스이니 잘 해결하시기 바랍니당

    dlwns97―2021.02.01 18:50
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.