반응형
https://leetcode.com/problems/maximum-matrix-sum/description
구현 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
행 r, 열 c, 음수의 개수 minus_count, 가장 작은 절댓값 min_abs_num, 원소들의 총 합 sum을 선언 후 적절히 초기화합니다.
📔 풀이과정
1. matrix의 원소를 순회하며 음수의 개수를 minus_count에 세주고 최소 절댓값은 min_abs_num에 저장합니다.
📔 정답 출력 | 반환
1. minus_count가 짝수라면: 인접한 부분들을 자유롭게 -1로 곱해 부호를 바꿀 수 있으므로 minus_count가 짝수라면 어떻게든 모든 원소를 양수로 만들 수 있습니다. 즉, 2개의 음수가 멀리 떨어져 있더라도 인접한 원소들을 이어가며 -1씩 곱한다면 결국에는 인접할 수 있고 이 들 둘을 양수로 만들 수 있습니다. 따라서 이 경우에는 sum을 바로 반환해주면 됩니다.
2. 홀수라면: 인접한 원소들을 적절히 -1씩 곱해가며 절댓값이 가장 작은 원소만 음수로 만들 수 있습니다. 기존에 sum은 모든 원소가 양수인 것을 전제로 더했으니 sum - min_abs_num * 2값을 반환합니다.
📕 Code
📔 Python3
class Solution:
def maxMatrixSum(self, matrix: List[List[int]]) -> int:
r = len(matrix)
c = len(matrix[0])
minus_count = 0
min_abs_num = 0x3f3f3f3f
sum = 0
for i in range(r):
for j in range(c):
value = matrix[i][j]
if value < 0:
minus_count += 1
sum += abs(value)
min_abs_num = min(min_abs_num, abs(value))
if minus_count % 2 == 0:
return sum
return sum - min_abs_num * 2
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Implementation' 카테고리의 다른 글
(SQL) - LeetCode (easy) 1967. Number of Strings That Appear as Substrings in Word (0) | 2024.11.25 |
---|---|
(Python3) - LeetCode (Medium) : 1072. Flip Columns For Maximum Number of Equal Rows (0) | 2024.11.22 |
(Python3) - LeetCode (Medium) 2257. Count Unguarded Cells in the Grid (0) | 2024.11.21 |
(Python3) - 프로그래머스(연습문제): 카드 뭉치 (0) | 2024.11.17 |
(Python3) - 프로그래머스(코딩 기초 트레이닝): 정수를 나선형으로 배치하기 (0) | 2024.11.14 |