[BOJ/C++] 1051 숫자 정사각형

Hanbi·2022년 4월 27일
0

Problem Solving

목록 보기
16/108
post-thumbnail

문제

https://www.acmicpc.net/problem/1051

풀이

  • 범위 조건 주위(이거 빼먹으면 런타임 에러)
    i+k < N
    j+k < M
  • result값 for문에서 계속 갱신되므로 max를 result로 저장해야 함
    result = max(result, k+1);

코드

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main() {
	int N, M;
	string input;
	int arr[51][51] = {0};
	int result = 1;
	
	cin >> N >> M;
	for(int i=0; i<N; i++) {
		cin >> input;
		for(int j=0; j<M; j++) {
			arr[i][j] = input[j] - '0';
		}
	}
	
	for(int i=0; i<N; i++) {
		for(int j=0; j<M; j++) {
			for(int k=0; k<min(N,M); k++) {
				if(i+k < N && j+k < M && arr[i][j] == arr[i+k][j] && arr[i][j] == arr[i][j+k] && arr[i][j] == arr[i+k][j+k])
					result = max(result, k+1);
			}
		}
	}
	
	cout << result * result << endl;
	
	return 0;
}
profile
👩🏻‍💻

0개의 댓글