본문 바로가기
SWE/코테

백준_14925_목장 건설하기

by S나라라2 2018. 9. 21.
반응형


문제를 풀면 여기에 그냥 코드 업로드만 했는데

 

내가 푼 문제 다시 들여다보지도 않고 

코드 궁금하면 백준사이트에서 다시 볼 수 있는데


코드 업로드하는게 무슨 도움이 되는지 고민이 되기 시작했다



푼 알고리즘?을 정리해서 올리는게 좋은걸까,,, 흠




#include<iostream>

using namespace std;

int arr[1000][1000] = { 0, };
int arr_tmp[1000][1000] = { 0, };
int M, N;

int CountLongestS(int _x, int _y, int _longest) { // _longest가 가능한지 찾는거임!

	for (int y = (_longest - 1); y > -1; y--) {
		for (int x = (_longest - 1); x > -1; x--) {
			if ( _y + y >= M || _x + x >= N) { // 사이즈 넘어가면 여기는안되는거임
				return _longest;
			}
			if (arr[_y + y][_x + x] != 0) { // 사이즈는 안넘어가지만 장애물이 있어서 안됨
				//검사할 필요없는 좌표 표시해주기
				arr_tmp[_y + y][_x + x - 1] = 1;
				return _longest; // 실제
			}
		}
	}
	return CountLongestS(_x,_y,_longest + 1);
}

int main() {
	
	cin >> M >> N;

	for (int y = 0; y < M; y++) {
		for (int x = 0; x < N; x++) {
			int tmp;
			cin >> tmp;
			arr[y][x] = tmp; 
			arr_tmp[y][x] = tmp;
		}
	}


	int biggist = 0;
	for (int y = 0; y <= M-biggist; y++) {
		for (int x = 0; x <= N-biggist; x++) {
			if (arr_tmp[y][x]==0) {
				int tmp = CountLongestS(x,y,biggist);
				if (tmp > biggist) {
					biggist = tmp;
				}
			}
		}
	}

	cout << biggist-1 << endl;
	return 0;
}
반응형