#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int** watering_can, int watering_can_row_len, int watering_can_col_len, int N, int M) {
const int NO_WATER = 0;
const int WATER = 1;
int answer = 0;
int** garden = (int**)malloc(sizeof(int*) * N);
for (int i = 0; i < N; i++) {
garden[i] = (int*)malloc(sizeof(int) * N);
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
garden[i][j] = 0;
}
}
for (int i = 0; i < M; i++) {
int* can = watering_can[i];
garden[can[0]][can[1]] = 1;
for (int j = 1; j < can[2]; j++) {
if (can[0] + j < N) {
garden[can[0] + j][can[1]] = WATER;
}
if (can[0] - j >= 0) {
garden[can[0] - j][can[1]] = WATER;
}
if (can[1] + j < N) {
garden[can[0]][can[1] + j] = WATER;
}
if (can[1] - j >= 0) {
garden[can[0]][can[1] - j] = WATER;
}
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (garden[i][j] == NO_WATER) {
answer += 1;
}
}
}
return answer;
}
// 아래는 테스트케이스 출력을 해보기 위한 main 함수입니다.
// 아래에는 잘못된 부분이 없으니 위의 코드만 수정하세요.
int main() {
int watering_can1_row_len = 2;
int watering_can1_col_len = 3;
int M1 = watering_can1_row_len;
int** watering_can1 = (int**)malloc(sizeof(int*) * watering_can1_row_len);
for(int i = 0; i < watering_can1_row_len; i++)
watering_can1[i] = (int*)malloc(sizeof(int) * watering_can1_col_len);
watering_can1[0][0] = 2;
watering_can1[0][1] = 2;
watering_can1[0][2] = 2;
watering_can1[1][0] = 0;
watering_can1[1][1] = 0;
watering_can1[1][2] = 1;
int N1 = 5;
int ret1 = solution(watering_can1, watering_can1_row_len, watering_can1_col_len, N1, M1);
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
printf("solution 함수의 반환 값은 %d입니다.\\n", ret1);
}