[LeetCode] 807. Max Increase to Keep City Skyline
Updated:
Max Increase to Keep City Skyline
n * n ํฌ๊ธฐ์ ๋ ์ ๊ฐ์ ๋์ด๊ฐ ๋ค๋ฅธ ๋น๋ฉ์ด ์๋ค. ๊ธฐ์กด์ ์ค์นด์ด๋ผ์ธ์ด ๋ฐ๋์ง ์๊ฒ ๋น๋ฉ๋ค์ ์ธต ์๋ฅผ ์ฌ๋ฆฌ๋ ค๊ณ ํ๋ค.
๊ฐ ๋น๋ฉ๋ค์ ์ต๋ ๋ช ์ธต ๊น์ง ์ฌ๋ฆด ์ ์์๊น ? ์ด๋ ๋ชจ๋ ๋น๋ฉ์ ์ถ๊ฐ ์ธต ์ ๋ฅผ ๋ํด์ ๋ฐํ ํ๋ฉด ๋๋ค.
์์์์ ๋ณด์๋ฉด ์ผ์ชฝ์์ ๋ดค์๋ ์ค์นด์ด๋ผ์ธ์ [8, 7, 9, 3] ์ด๊ณ ๋ฐ์์ ๋ดค์ ๋ ์ค์นด์ด๋ผ์ธ์ [9, 4, 8, 7] ์ด๋ค.
์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด์ ๋น๋ฉ ์ธต ์ ๋์ฌ๋ณด๋ฉด ์ผ์ ํ ๊ท์น์ด ๋ณด์ธ๋ค.
๋ฐ๋ก ๊ฐ index ์์ ์ผ์ชฝ์์์ ์ค์นด์ด๋ผ์ธ, ๋ฐ์์์ ์ค์นด์ด๋ผ์ธ ๊ฐ ์ค ์์ ๊ฐ์ ๋ฃ์ผ๋ฉด ๋๋ค.
(0, 0) (0, 1) (0, 2) (0, 3)
(1, 0) (1, 1) (1, 2) (1, 3)
(2, 0) (2, 1) (2, 2) (2, 3)
(3, 0) (3, 1) (3, 2) (3, 3) ์ด๋ ๊ฒ index ๋ฅผ ๋น๊ตํ๋ฉด ๋๋ค.
class Solution:
def maxIncreaseKeepingSkyline(self, grid: List[List[int]]) -> int:
row = [max(val) for val in grid]
col = [max(val) for val in zip(*grid)]
increase = []
for i in range(len(row)):
tmp = []
for j in range(len(col)):
tmp.append(min(row[i], col[j]))
increase.append(tmp)
answer = 0
for origin, up in zip(grid, increase):
answer += sum(up) - sum(origin)
return answer
ํ๋ ฌ์ 90๋ ๋๋ฆฌ๊ณ ์ถ๋ค๋ฉด zip(*arr) ์ ์ฌ์ฉํ์ ์์ฃผ ์ ์ฉํ๋ค.
Leave a comment