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

파이썬에서 행렬의 열 정렬

<시간/>

행렬이 있다고 가정하고 각 열을 오름차순으로 정렬해야 합니다.

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

11
21
31
6
6
4
1
11
8

그러면 출력은

1
6
4
6
11
8
11
21
31

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

  • R :=행렬의 행 개수, C :=행렬의 열 개수
  • res :=주어진 행렬과 같은 크기의 행렬이고 0으로 채움
  • 0~C 범위의 col에 대해
    • values ​​:=요소를 행렬[col]의 벡터로 사용
    • 0~R 범위의 행에 대해 다음을 수행합니다.
      • res[row, col] :=값에서 마지막 요소 삭제
  • 반환 결과

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

예시

class Solution:
   def solve(self, matrix):
      R = len(matrix)
      C = len(matrix[0])
      res = [[0] * C for _ in range(R)]
      for col in range(C):
         values = [r[col] for r in matrix]
         values.sort(reverse=True)
         for row in range(R):
            res[row][col] = values.pop()
      return res
ob = Solution()
matrix = [[11, 21, 31],[6, 6, 4],[1, 11, 8]]
print(ob.solve(matrix))

입력

[[11, 21, 31],
[6, 6, 4],
[1, 11, 8]]

출력

[[1, 6, 4],[6, 11, 8],[11, 21, 31]]