[LeetCode] 1337. The K Weakest Rows in a Matrix

Minji·2024년 1월 5일

The K Weakest Rows in a Matrix - LeetCode

문제 접근 🤔


  • 이 문제는 각 행의 전사 수를 기준으로 가장 약한 행부터 강한 행까지 k 개를 찾아 반환하는 문제이다.
  • heapq 에 값을 튜플 형태로 저장하면 정렬의 우선순위를 정할 수 있다.
    • 전사의 수가 더 적은 행이 약하다.
    • 전사의 수가 같다면 행렬에서 인덱스 값이 더 낮은 행이 약하다.
  • 즉 값으로 (전사의 수, 인덱스) 를 저장해준다면 힙에는 전사의 수가 더 낮은 순으로 저장되고, 전사의 수가 같다면 인덱스가 낮은 순으로 저장된다.
  • 전사는 1로 나타내므로 각 행마다 collections.Counter 함수를 사용하여 1의 개수를 추출하고, 힙에 이 값과 행의 인덱스 값을 저장한다.
  • heapq.heappop(힙) 을 이용하여 약한 행의 정보를 k 번 꺼내어 행의 인덱스 값을 리스트에 담아주고 이 리스트를 최종 출력하면 된다.


놓쳤던 부분 😅


  • 없음


코드 😁


파이썬 코드(97 ms)

from collections import Counter
import heapq

class Solution:
    def kWeakestRows(self, mat: List[List[int]], k: int) -> List[int]:
        heap, answer = [], []
        for idx, row in enumerate(mat):
            heapq.heappush(heap, (Counter(row)[1], idx))

        while k:
            answer.append(heapq.heappop(heap)[1])
            k -= 1
        return answer
profile
기록을 좋아하는 프론트엔드 개발자입니다.

0개의 댓글