[LeetCode] Surface Area of 3D Shapes

아르당·2026년 3월 10일

LeetCode

목록 보기
192/223
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

1 x 1 x 1 크기의 큐브가 배치된 n x n 그리드가 주어진다. 각 v = grid[i][j] 값은 셀 (i, j) 위에 놓인 v개의 큐브로 이루어진 탑을 나타낸다.

이 큐브들을 배치한 후, 바로 인접한 큐브들을 서로 붙여 불규칙한 3D 도형들을 만들기로 했다.

만들어진 도형들의 총 표면적을 계산해라.

Example

#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

Constraints

  • n == grid.length == grid[i].length
  • 1 <= n <= 50
  • 0 <= grid[i][j] <= 50

Solved

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;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글