문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
1 x 1 x 1 크기의 큐브가 배치된 n x n 그리드가 주어진다. 각 v = grid[i][j] 값은 셀 (i, j) 위에 놓인 v개의 큐브로 이루어진 탑을 나타낸다.
이 큐브들을 배치한 후, 바로 인접한 큐브들을 서로 붙여 불규칙한 3D 도형들을 만들기로 했다.
만들어진 도형들의 총 표면적을 계산해라.
#1
Input: grid = [[1, 2], [3, 4]]
Output: 34
#2
Input: grid = [[1, 1, 1], [1, 0, 1], [1, 1, 1]]
Output: 32
#3
Input: [[2, 2, 2], [2, 1, 2], [2, 2, 2]]
Output: 46
class Solution {
public int surfaceArea(int[][] grid) {
int result = 0;
int n = grid.length;
for(int i = 0; i < n; ++i){
for(int j = 0; j < n; ++j){
if(grid[i][j] > 0){
result += grid[i][j] * 4 + 2;
}
if(i > 0){
result -= Math.min(grid[i][j], grid[i - 1][j]) * 2;
}
if(j > 0){
result -= Math.min(grid[i][j], grid[i][j - 1]) * 2;
}
}
}
return result;
}
}