[LeetCode] Projection Area of 3D Shapes

아르당·2026년 3월 6일

LeetCode

목록 보기
189/213
post-thumbnail

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

Problem

주어진 n x n 격자에 x, y, z축에 정렬된 1 x 1 x 1 정육면체를 배치해야 한다.
각 v = grid[i][j] 값은 셀(i, j) 위에 놓인 v개의 큐브로 이루어진 탑을 나타낸다.
정육면체들의 xy, yz, zx 평면에 대한 투영을 본다.
투영은 그림자처럼 3차원 도형을 2차원 평면에 투영한 것이다. 위쪽, 앞쪽, 옆쪽에서 정육면체를 바라볼 때 이 "그림자"를 보는 것이다.
세 투영면의 총 면적을 반환해라.

Example

#1

Input: grid = [[1, 2], [3, 4]]
Output: 17

#2
Input: grid = [[2]]
Output: 5

#3
Input: grid = [[1, 0], [0, 2]]
Output: 8

Constraints

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

Solved

class Solution {
    public int projectionArea(int[][] grid) {
        int result = 0;
        int n = grid.length;

        for(int i = 0; i < n; ++i){
            int x = 0;
            int y = 0;

            for(int j = 0; j < n; ++j){
                x = Math.max(x, grid[i][j]);
                y = Math.max(y, grid[j][i]);

                if(grid[i][j] > 0){
                    ++result;
                }
            }

            result += x + y;
        }

        return result;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글