오늘의 주제는 힙(Heap)
[Delete Greatest Value in Each Row]
문제
입력과 출력
코드
class Solution:
def deleteGreatestValue(self, grid: List[List[int]]) -> int:
i = 0
current = 0
result=0
while True:
if not grid[i]: #아무것도 안남았으면
break
grid[i].sort()
current = max(current,grid[i][-1])
grid[i].pop(-1)
i+=1
if i == len(grid):
result += current
#다시 초기화
current = 0
i = 0
return result
먼저 while문 안에 배열이 비었을 때 구문을 빠져나올 수 있도록 조건을 지정해준다.
그리고 grid 배열의 행 별로 정렬을 해주고 current 값을 0으로 지정해준 뒤, 이와 큰값들을 비교해가며 current 값을 바꿔준다.
이때 current 변수에 넣어준 후 마지막요소를 pop으로 제거해주고 다음 행으로 진행할 수 있도록 i를 +1해준다.
이때 행의 개수와 같아지면 current의 수를 result에 더해준뒤 다시 처음부터 돌 수 있도록 current와 i를 초기화해준다.
오늘도 어김없이 첫 실행 코드로 회고를 시작한다.
사진과 같이 정렬을 해준뒤 크기를 비교하여 마지막 요소를 result 배열에 넣고 제거해주는 코드를 구성했었다.
그러나 grid가 비어있을 때 조건을 잘못 작성해서 구문이 한번만 도는 문제를 보이는 것 같았다.
그 부분을 수정해주니 문제없이 반복문이 실행되었고,
그러나
case 2에서 오류가 났다.
아마 한쪽 배열에만 요소가 있을 때와는 내 코드가 맞지 않아 생긴 문제인듯하여 여기서부터 1시간정도.. 헤매었다 ㅜㅜ
도저히 떠오르지 않아서 결국 솔루션의 힘을 빌려본다..
오늘도 한가지 배운점이 있다면 뭐든 for문이 장사는 아니다..
알고리즘에 따라서 잘 골라 써야하는데 뭐든 for문부터 작성하고 보는 나.. 아직 연습이 많이 필요할 것 같다 ㅜㅜ