#include "..\CookHeader.h"

int ROW = 7, COL = 7;
Array <Array <int>> trushMaze = emptyArray2(ROW, COL);

int gotoStation() {
	Array <Array <int>> memo = emptyArray2(ROW, COL); // 5X5 빈 배열
	memo[0][0] = trushMaze[0][0];

	int rowSum = memo[0][0];
	for (int i = 1; i < ROW; i++) {
		rowSum += trushMaze[0][i];
		memo[0][i] = rowSum;
	}

	int colSum = memo[0][0];
	for (int i = 1; i < COL; i++) {
		colSum += trushMaze[i][0];
		memo[i][0] = colSum;
	}

	for (int row = 1; row < ROW; row++) {
		for (int col = 1; col < COL; col++) {
			if (memo[row][col - 1] > memo[row - 1][col])
				memo[row][col] = memo[row][col - 1] + trushMaze[row][col];
			else
				memo[row][col] = memo[row - 1][col] + trushMaze[row][col];
		}
	}

	return memo[ROW - 1][COL - 1];
}

int main() {

	for (int i = 0; i < ROW; i++) {
		for (int k = 0; k < COL; k++) {
			randomInit(0, 3);
			trushMaze[i][k] = cookRandom(gen);
		}
	}

	println("--- 방의 쓰레기 상태--- ");
	for (int r = 0; r < ROW; r++) {
		printArray(trushMaze[r]);
	}

	int maxTrush = gotoStation();
	println("\n도킹 스테이션으로 돌아가는 길의 최대 쓰레기 수 -->" + to_string(maxTrush));

	if (maxTrush > 30)
		println("도킹 스테이션 복귀 실패 !!");
	else
		println("도킹 스테이션 복귀 성공 !!");
}