양의 정수로 구성된 m x n 행렬 grid가 주어집니다.
다음의 연산을 grid가 빈 상태가 될 때까지 수행합니다:
1. 각 행에서 가장 큰 값을 삭제합니다. 여러 개의 동일한 값이 존재할 경우, 그 중 아무거나 삭제합니다.
2. 삭제된 값들 중에서 최댓값을 답에 더합니다.
3. 각 연산이 끝날 때마다 열의 수가 하나 줄어듭니다.
위 연산을 수행하여 grid가 비게 되면, 답을 반환합니다.
입력: grid = [[1,2,4],[3,3,1]]
출력: 8
설명:
1. 첫 번째 연산에서 첫 번째 행에서는 4를 삭제하고, 두 번째 행에서는 3을 삭제합니다. (3이 두 개 존재하지만 아무거나 삭제 가능합니다.) 최댓값은 4이므로 4를 답에 더합니다.
2. 두 번째 연산에서는 첫 번째 행에서 2를 삭제하고, 두 번째 행에서 3을 삭제합니다. 최댓값은 3이므로 3을 답에 더합니다.
3. 세 번째 연산에서는 첫 번째 행에서 1을 삭제하고, 두 번째 행에서 1을 삭제합니다. 최댓값은 1이므로 1을 답에 더합니다.
최종 답은 4 + 3 + 1 = 8입니다.
입력: grid = [[10]]
출력: 10
설명:
1. 첫 번째 연산에서 10을 삭제하고, 답에 10을 더합니다.
최종 답은 10입니다.
• m == grid.length
• n == grid[i].length
• 1 <= m, n <= 50
• 1 <= grid[i][j] <= 100
class Solution:
def deleteGreatestValue(self, grid: List[List[int]]) -> int:
answer = 0
while grid and grid[0]:
max_vals = []
for row in grid:
max_val = max(row)
row.remove(max_val)
max_vals.append(max_val)
answer += max(max_vals)
return answer