Skip to content

Commit 049e6fa

Browse files
committed
1329
1 parent fd7f770 commit 049e6fa

1 file changed

Lines changed: 60 additions & 0 deletions

File tree

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
'''
2+
1. 아이디어 :
3+
첫번째 행의 마지막
4+
첫번째 행의 마지막 - 1 -> 두번째 행의 마지막
5+
첫번째 행의 마지막 - 2 -> 두번째 행의 마지막 - 1 -> 세번 째 행의 마지막
6+
첫번째 행의 마지막 - 3 -> 두번째 행의 마지막 - 2 -> 세번째 행의 마지막 -1
7+
두번째 행의 마지막 - 3 -> 세번째 행의 마지막 -2
8+
-> 세번째 행의 마지막 -3
9+
[0][-1]
10+
[0][-2] [1][-1]
11+
[0][-3] [1][-2] [2][-1]
12+
[0][-4] [1][-3] [2][-2]
13+
[1][-4] [2][-3]
14+
[2][-4]
15+
16+
2. 시간복잡도 :
17+
o(n ^ 2 log n)
18+
19+
3. 자료구조/알고리즘 :
20+
21+
'''
22+
23+
class Solution:
24+
def diagonalSort(self, mat: List[List[int]]) -> List[List[int]]:
25+
x_len = len(mat[0])
26+
y_len = len(mat)
27+
28+
dic = {}
29+
lst = []
30+
j = -1
31+
for i in range(y_len):
32+
dic[i] = j
33+
j += 1
34+
35+
while True:
36+
tmp = []
37+
for y in range(y_len):
38+
if -x_len <= dic[y] <= -1:
39+
tmp.append((dic[y],y))
40+
41+
for k in dic.keys():
42+
dic[k] -= 1
43+
lst.append(tmp)
44+
45+
if all([not(-x_len <= i <= -1) for i in dic.values()]):
46+
break
47+
48+
print(lst)
49+
50+
for tmp in lst:
51+
vals = sorted([mat[y][x] for x,y in tmp])
52+
53+
while tmp:
54+
x,y = tmp.pop()
55+
v = vals.pop()
56+
57+
mat[y][x] = v
58+
59+
return mat
60+

0 commit comments

Comments
 (0)