[LeetCode] Delete Greatest Value in Each Row

아르당·2026년 9월 16일

LeetCode

목록 보기
530/561
post-thumbnail

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

Problem

양의 정수로 구성된 m x n 행렬 grid가 주어진다.
그리드가 비어 있게 될때까지 다음 작업을 수행해라.

  • 각 행에서 가장 큰 값의 요소를 삭제해라. 그런 요소가 여러 개일 경우, 그 중 하나를 삭제해라.
  • 삭제된 요소들 중 최댓값을 답에 더해라.

각 연산 후에 열의 개수가 하나씩 줄어든다.
위에서 설명한 연산을 수행한 후 결과를 반환해라.

Example

#1

Input: grid = [[1, 2, 4], [3, 3, 1]]
Output: 8
Explanation: 위 그림은 각 단계에서 값이 삭제되는 것을 보여준다.

  • 첫 번째 단계에서, 첫 번째 행에서 4와 두 번째 행에서 3을 제거한다. 답에 4를 더한다.
  • 두 번째 단계에서, 첫 번째 행에서 2와 두 번째 행에서 3을 제거한다. 답에 3을 더한다.
  • 세 번째 단계에서, 첫 번째 행에서 1과 두 번째 행에서 1을 제거한다. 답에 1을 더한다.

최종 답은 4 + 3 + 1 = 8이다.

#2

Input: grid = [[10]]
Output: 10
Explanation: 위 그림은 각 단계에서 값이 삭제되는 것을 보여준다.

  • 첫 번째 단계에서, 첫 번째 행에서 10을 제거한다. 답에 10을 더한다.

최종 답은 10이다.

Constraints

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 50
  • 1 <= grid[i][j] <= 100

Solved

class Solution {
    public int deleteGreatestValue(int[][] grid) {
        int m = grid.length;
        int n = grid[0].length;
        int sum = 0;

        for(int[] row : grid){
            Arrays.sort(row);
        }

        for(int j = 0; j < n; j++){
            int max = 0;

            for(int i = 0; i < m; i++){
                max = Math.max(max, grid[i][j]);
            }

            sum += max;
        }

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

0개의 댓글