Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬의 큰 숫자

<시간/>

행렬이 있다고 가정하고 행과 열에서 값이 가장 큰 정수의 총 개수를 찾아야 합니다.

따라서 입력이 다음과 같으면

1 3 2
4 6 5
1 5 7

6과 7이 유효하므로 출력은 2가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 매트 :=행렬

  • r_maxes :=mat의 각 행의 최대 요소 목록을 만듭니다.

  • c_maxes :=mat의 각 열의 최대 요소 목록 만들기

  • a :=새 목록

  • 범위 0에서 행 수 - 1의 r에 대해 수행

    • 범위 0에서 열 수 - 1에 있는 c의 경우 수행

      • v :=매트[r, c]

      • r_maxes[r]이 v이고 c_maxes[c]가 v이면

        • 끝에 v 삽입
  • 의 반환 크기

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class Solution:
   def solve(self, matrix):
      mat = matrix
      trans_mat = list(zip(*matrix))
      print(mat, trans_mat)
      r_maxes = [max(row) for row in mat]
      c_maxes = [max(t_row) for t_row in trans_mat]
      a = []
      for r in range(len(mat)):
         for c in range(len(trans_mat)):
            v = mat[r][c]
            if (r_maxes[r], c_maxes[c]) == (v, v):
               a.append(v)
      return len(a)
ob = Solution()
matrix = [
   [1, 3, 2],
   [4, 6, 5],
   [1, 5, 7]
]
print(ob.solve(matrix))

입력

[[1, 3, 2], [4, 6, 5], [1, 5, 7]]

출력

2