거누의 개발노트
[파이썬] 1337. The K Weakest Rows in a Matrix - 리트코드 본문
반응형
문제
m x n이진 행렬 mat이 제공 되는데, 1의 개수가 가장 적은 k 개의 인덱스를 반환하는 프로그램을 작성하시오.
입력
Input: mat =
[[1,1,0,0,0],
[1,1,1,1,0],
[1,0,0,0,0],
[1,1,0,0,0],
[1,1,1,1,1]],
k = 3
출력
Output: [2,0,3]
작성한 코드1
def kWeakestRows(mat: List[List[int]], k: int) -> List[int]:
ans = []
s = collections.defaultdict(int)
for i in range(len(mat)):
# 1의 개수가 몇 개인지
c = collections.Counter(mat[i])
# 인덱스를 키로 1의 개수 만큼으로 하는 딕셔너리
s[i] = c[1]
# 값을 기준으로 정렬
s = sorted(s.items(), key=lambda x:x[1])
for key, val in s:
# key 값을 ans에 담는다.
ans.append(key)
return ans[:k]
작성한 코드2
def kWeakestRows2(mat: List[List[int]], k: int) -> List[int]:
heap = []
answer = []
for i in range(len(mat)):
# i번째 리스트의 1의 갯수
cnt = mat[i].count(1)
#heap 리스트에 1의 갯수와 인덱스를 푸쉬
heapq.heappush(heap, [cnt, i])
for _ in range(k):
# pop하면 우선순위가 가장 작은 값부터
answer.append(heapq.heappop(heap)[1])
return answer
https://leetcode.com/problems/the-k-weakest-rows-in-a-matrix/submissions/
반응형
'코딩테스트' 카테고리의 다른 글
[파이썬] 백준 - 최소 힙 - 1927 (0) | 2022.05.25 |
---|---|
[파이썬] 215. Kth Largest Element in an Array - 리트코드 (0) | 2022.05.25 |
[파이썬] 1464. Maximum Product of Two Elements in an Array - 리트코드 (0) | 2022.05.25 |
[파이썬] 297. Serialize and Deserialize Binary Tree - 리트코드 (0) | 2022.05.24 |
[파이썬] 700. Search in a Binary Search Tree - 리트코드 (0) | 2022.05.24 |
Comments