6์ฃผ์ฐจ ํ์์ผ
- ๊ฐ์ธ ๊ณต๋ถ
์ค๋๋ง์ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ๊ธฐ~
์์์ ์ค๋ณต์ด ์๋ m x n
ํ๋ ฌ์ด ์ฃผ์ด์ง ๋ ํ๋ ฌ์ ์กด์ฌํ๋ ๋ชจ๋ Lucky number ๋ฅผ ๋ฐํํ๊ธฐ
Lucky number : ์์ ์ด ์ํ ํ์์๋ ์ต์๊ฐ์ด๋ฉฐ ์์ ์ด ์ํ ์ด์์๋ ์ต๋๊ฐ์ด ๋๋ ์์
์ ๊ทผ
๊ฐ ํ์์ ์ต์๊ฐ์ ์ฐพ์์ ์ต์๊ฐ์ด ์ํ ์ด์ ์ต๋๊ฐ๊ณผ ๋น๊ตํ๊ธฐ
์๊ฐ ๋ณต์ก๋ : O(m*n) = O(n^2)
์ฝ๋
class Solution:
def luckyNumbers (self, matrix: List[List[int]]) -> List[int]:
# lucky number : ์์ ์ด ์ํ ํ์์๋ ์ต์, ์ด์์๋ ์ต๋๊ฐ ๋๋ ์
M = len(matrix[0])
N = len(matrix)
luckies = []
for row in matrix:
minNum = min(row)
minIdx = row.index(minNum)
col = [matrix[i][minIdx] for i in range(N)]
if max(col) == minNum:
luckies.append(minNum)
return luckies
class Solution:
def luckyNumbers (self, matrix: List[List[int]]) -> List[int]:
# lucky number : ์์ ์ด ์ํ ํ์์๋ ์ต์, ์ด์์๋ ์ต๋๊ฐ ๋๋ ์
matrix_T = list(zip(*matrix))
rowMin = []
colMax = []
for row in matrix: # ๊ฐ ํ์์์ ์ต์๊ฐ
rowMin.append(min(row))
for col in matrix_T: # ๊ฐ ์ด์์์ ์ต๋๊ฐ
colMax.append(max(col))
return set(rowMin) & set(colMax)