[C++] 백준 1051 : 숫자 정사각형
#include <iostream>
#include <algorithm> // min
using namespace std;
int N, M, n = 1;
int map[51][51]; // 입력값 - 자동으로 -1로 초기화 불가능
int main() {
scanf("%d %d", &N, &M);
for(int i = 0; i <50; i++){
for(int j = 0; j < 50; j++){
map[i][j] = -1; // -1로 초기화
}
}
for(int i = 0; i < N; i++){
for(int j = 0; j < M; j++){
scanf("%1d", &map[i][j]); // 숫자 1개씩 받기
}
}
for(int i = 0; i < N; i++){
for(int j = 0; j < M; j++){
for(int k = 1; k < min(N,M); k++){ // N이나 M중 작은것
// if(map[i][j] == -1 || map[i+k][j] == -1 || map[i][j+k] == -1 || map[i+k][j+k] == -1){
// continue;
// }
if(i + k < N && j + k < M && map[i][j] == map[i+k][j] && map[i][j] == map[i][j+k] && map[i][j] == map[i+k][j+k]){
// printf("%d %d %d\n", i, j, k);
n = max(n, k+1);
}
}
}
}
printf("%d", n * n);
return 0;
}
6번이나 틀려서 고친 문제...
아니 -1로 초기화를 했는데 그러면 해당 값이 -1이면 범위를 초과한거니까 아 범위를 넘어갔구나! continue 해야지 라는 생각을 해야하는거 아닌가? 계속 오류는 나고, 어떤 input값을 넣어도 작동은 잘 되는데 계속 틀렸습니다. 가 떠서 정신 나갈 뻔 했어...ㅜㅜ
아직도 잘 모르겠다. 하나 막히면 아예 새로운 길을 뚫어야한다는 생각을 가져야할 것 같다.
그래도 브루트포스 알고리즘 정말 싫어하고 두려워했는데 이제 조금씩은 풀 수 있어서 다행이야. 실버3인데 실제로는 쉽게 접근할 수 있었다.
Author And Source
이 문제에 관하여([C++] 백준 1051 : 숫자 정사각형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lamknh/C-백준-1051-숫자-정사각형저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)