Delete Greatest Value in Each Row

제로콜라좋아요·2024년 6월 26일
0

algorithem

목록 보기
35/37

문제설명

양의 정수로 구성된 m x n 행렬 grid가 주어집니다.

다음의 연산을 grid가 빈 상태가 될 때까지 수행합니다:

1.	각 행에서 가장 큰 값을 삭제합니다. 여러 개의 동일한 값이 존재할 경우, 그 중 아무거나 삭제합니다.
2.	삭제된 값들 중에서 최댓값을 답에 더합니다.
3.	각 연산이 끝날 때마다 열의 수가 하나 줄어듭니다.

위 연산을 수행하여 grid가 비게 되면, 답을 반환합니다.

예시 1


입력: 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입니다.

예시 2

입력: 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

<내 코드의 흐름>

  1. deleteGreatestValue라는 함수를 정의합니다.
  • 이 함수는 grid라는 2차원 리스트(리스트의 리스트)를 입력으로 받고, 정수형 값을 반환합니다.
  1. answer 변수를 0으로 초기화합니다.
  • 이 변수는 최종적으로 반환할 답을 저장하는 데 사용됩니다.
  1. grid가 비어 있지 않고 grid의 첫 번째 행이 비어 있지 않은 동안 반복합니다.
  • 즉, grid가 비어 있을 때까지 반복합니다.
  1. max_vals라는 빈 리스트를 초기화합니다.
  • 이 리스트는 각 행에서 삭제된 최댓값들을 저장하는 데 사용됩니다.
  1. grid의 각 행(row)에 대해 반복합니다.
  2. 현재 행에서 최댓값을 찾습니다.
  3. 현재 행에서 최댓값을 삭제합니다.
  4. 삭제된 최댓값을 max_vals 리스트에 추가합니다.
  5. max_vals 리스트에서 최댓값을 찾아 answer에 더합니다.
  6. 최종적으로 계산된 answer를 반환합니다.
profile
개발자계의 제로콜라

0개의 댓글