[99클럽 코테스터디 2기][Python/비기너] 38번째 문제: Delete Greatest Value in Each Row

최민지·2024년 6월 26일
0
post-thumbnail

오늘의 주제는 힙(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문부터 작성하고 보는 나.. 아직 연습이 많이 필요할 것 같다 ㅜㅜ

profile
공부..일기....

0개의 댓글