소프트웨어에 대한 모든 것

LeetCode 풀기 - 1329. Sort the Matrix Diagonally 본문

알고리즘/LeetCode

LeetCode 풀기 - 1329. Sort the Matrix Diagonally

앤테바 2021. 12. 2. 05:55
반응형

1329. Sort the Matrix Diagonally

https://leetcode.com/problems/sort-the-matrix-diagonally/

 

Sort the Matrix Diagonally - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

문제)

솔루션1) - Straight Forward

특별한 자료구조나 알고리즘은 사용하지 않았습니다.

문제 그대로 이해하여 풀었습니다.

 

문제 풀이 접근:

  • 오른쪽 상단을 시작으로 row++, col++ 이동하면서 대각선 방향으로 이동
  • 이동하면서 row, col index와 val을 저장
  • mat 영역을 벗어나면 저장된 val을 오름차순 정렬
  • mat에 저장된 row, col index 위치에 접근에서 정렬된 vals로 업데이트 수행
class Solution:
    def diagonalSort(self, mat: List[List[int]]) -> List[List[int]]:
        rows = len(mat)
        cols = len(mat[0])        
        
        def sort_diagnoal(row, col):
            locations = []
            vals = []
            
            # 대각선 방향으로 index 위치와 값을 리스트에 저장
            while row < rows and col < cols:
                locations.append([row, col])
                vals.append(mat[row][col])
                row += 1
                col += 1
            
            # 값을 오름차순 정렬
            vals.sort()
            
            for loc, val in zip(locations, vals):
                mat[loc[0]][loc[1]] = val
                
                
        for col in range(cols):
            sort_diagnoal(0, col)        
        
        for row in range(1, rows):
            sort_diagnoal(row, 0)
        
        return mat

 

반응형
Comments