DataScience trainee

Leetcode 498. Diagonal Traverse in Python3

Diagonal Traverse


개요

  • 이번 포스팅은 파이썬 코딩테스트 연습문제 풀이입니다.
  • Leetcode 에 공개된 예제이며 링크는 아래와 같습니다.

https://leetcode.com/problems/diagonal-traverse/


코드

class Solution:
    def findDiagonalOrder(self, mat: List[List[int]]) -> List[int]:
        x_len = len(mat[0])
        y_len = len(mat)
        di = 'up'
        answer = []
        current = 1
        x = 0
        y = 0
        
        while current <= (x_len * y_len):
            answer.append(mat[y][x])
            
            if di == 'up':
                y -= 1
                x += 1
            elif di == 'down':
                y += 1
                x -= 1
                
            if y >= y_len:
                di = 'up'
                y -= 1
                x += 2
            elif x >= x_len:
                di = 'down'
                y += 2
                x -= 1
                
            if y < 0:
                di = 'down'
                y += 1
            elif x < 0:
                di = 'up'
                x += 1

                
            current += 1
        return answer

마치며

이번 포스팅은 Leetcode에 존재하는 난이도 Medium 에 해당하는 문제입니다.