JSFiddle - React, Tailwind, and code Playground

by nomadev

JavaScript

function surfaceArea(H, W, A) {
	let cost = 0;
    for(let k = 0; k < A.length; k++) {
    	const col = k % W;
      const row = Math.floor(k / W);
      cost += 2; // top e bottom
			// se prima riga 
			if(row === 0) cost += A[k]; // sommo il costo la facciata lato top
      else {
      	// diff con riga superiore sommo i lati esposti se ci sono
      	cost += Math.abs(A[k] - A[k - W]);
      }
      // se ultima riga sommo anche tutta la facciata esposta
      if(row === H - 1) cost += A[k];
			
      // se prima colonna sommo il costo la facciata lat sx
      if(col === 0) cost += A[k];
      else {
      	// diff con colonna precedente sommo i lati esposti se ci sono
      	cost += Math.abs(A[k] - A[k - 1]);
      }
      if(col === W - 1) cost += A[k];
    }
    return cost;
}

//console.log(surfaceArea(3, 3, [1,3,4,2,2,3,1,2,4]));
console.log(surfaceArea(3, 3, [1,3,4, 2, 2, 3, 1, 2, 4]));