[LeetCode] 리트코드 807번 Max Increase to Keep City Skyline
(Python)
(글쓴날 : 2020.03.17)
* LeetCode, 리트코드 7번 문제 Python 언어 풀이입니다.
* 소스 코드의 저작권은 글쓴이에게 있습니다.
리트코드 807번 Max Increase to Keep City Skyline
1) 문제
문제 링크 : https://leetcode.com/problems/max-increase-to-keep-city-skyline/
2) 풀이 과정
빌딩들의 높이가 저장되어 있는 2차원 배열(Python의 경우 리스트)이 주어지고,
해당 배열을 행과 열을 기준 삼아 사각형 형태로 정렬하여, 행을 기준으로 제일 높은 빌딩들의 높이(스카인라인)들과, 열을 기준으로 제일 높은 빌딩들의 높이(스카이라인)들이 변하지 않을 정도로만 나머지 모든 빌딩들의 높이를 최대로 높였을 때 변한 높이의 총합을 구하는 문제입니다.
저의 경우, 행을 기준으로 제일 높은 빌딩들과 열을 기준으로 제일 높은 빌딩들을 리스트화하여 각각의 스카이라인을 구한 후 반복문을 통해 모든 빌딩들의 높이를 스카이라인에 벗어나지 않을 정도의 최대 높이로 높이면서 변화된 총 높이를 구해 문제를 해결하였습니다.
3) 코드
* Python 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
class Solution:
def maxIncreaseKeepingSkyline(self, grid: List[List[int]]) -> int:
tot = 0
lrSkyline = [max(height) for height in grid]
udSkyline = [max(height) for height in zip(*grid)]
for i, arr in enumerate(grid):
for j, height in enumerate(arr):
limit = min(lrSkyline[i], udSkyline[j])
if limit > height:
tot += limit - height
return tot
|
'Deprecated' 카테고리의 다른 글
[Baekjoon Online Judge] 백준 11654번 아스키 코드(Python) (0) | 2020.03.22 |
---|---|
한 학기 휴학 결정... 그리고 각오 (4) | 2020.03.21 |
[Baekjoon Online Judge] 백준 14681번 사분면 고르기(Python) (3) | 2020.03.17 |
[Baekjoon Online Judge] 백준 10996번 별 찍기 - 21(Python) (0) | 2020.03.14 |
[Baekjoon Online Judge] 백준 2446번 별 찍기 - 9(Python) (0) | 2020.03.14 |