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

Python에서 동일한 행의 최대 수를 위해 열 뒤집기

<시간/>

0과 1로 구성된 행렬이 있다고 가정하고 행렬에서 원하는 수의 열을 선택하고 해당 열의 모든 셀을 뒤집을 수 있습니다. 셀을 변환하면 해당 셀의 값이 0에서 1 또는 1에서 0으로 변경됩니다. 몇 번의 뒤집기 후에 모든 값이 동일한 행의 최대 수를 찾아야 합니다. 따라서 행렬이 다음과 같으면 -

0 0 0
0 0 1
1 1 0

출력은 2가 됩니다. 이는 처음 두 열의 값을 변환한 후 마지막 두 행의 값이 같기 때문입니다.

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

  • x :=행렬, m :=행 수 및 n :=열 수 및 r :=0
  • x
      의 각 요소 i에 대해
    • c :=0
    • a :=i의 모든 요소 l에 대한 목록, l XOR i 삽입
    • x
        의 각 요소 j에 대해
      • j =i 또는 j =a이면 c를 1만큼 증가
    • r :=c 및 r의 최대값
  • 반환 r

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

예시

class Solution(object):
   def maxEqualRowsAfterFlips(self, matrix):
      x = matrix
      m = len(matrix)
      n = len(matrix[0] )
      r =0
      for i in x:
         c=0
         a=[l ^ 1 for l in i]
         for j in x:
            if j== i or j ==a:
               c+=1
         r=max(c, r)
      return r
ob = Solution()
print(ob.maxEqualRowsAfterFlips([[0,0,0],[0,0,1],[1,1,0]]))

입력

[[0,0,0],[0,0,1],[1,1,0]]

출력

2