Diagonal Traverse
개요
- 이번 포스팅은 파이썬 코딩테스트 연습문제 풀이입니다.
Leetcode
에 공개된 예제이며 링크는 아래와 같습니다.
코드
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 에 해당하는 문제입니다.