오늘의 공부 키워드
1337 The K Weakest Rows in a Matrix
1337 The K Weakest Rows in a Matrix
이 문제는 이진 행렬에서 각 행의 군인 수를 계산하고, 주어진 k 값에 따라 가장 약한 행의 인덱스를 반환하는 문제입니다. 주어진 조건에 따라 각 행의 군인 수를 계산하고, 같은 수의 군인을 가진 행은 인덱스 순서대로 정렬합니다. 이를 통해 가장 약한 k개의 행을 구할 수 있습니다.
문제를 해결하는 방법은 다음과 같습니다:
- 각 행의 군인 수를 계산합니다.
- 행의 인덱스와 군인 수를 튜플로 묶어 리스트를 만듭니다.
- 이 리스트를 군인 수와 인덱스를 기준으로 정렬합니다.
- 정렬된 리스트에서 가장 약한 k개의 행의 인덱스를 추출합니다.
파이썬코드
def kWeakestRows(mat, k):
# 각 행의 군인 수를 계산하여 리스트 생성
soldiers_count = [(sum(row), index) for index, row in enumerate(mat)]
# 군인 수와 인덱스를 기준으로 정렬
soldiers_count.sort()
# 가장 약한 k개의 행의 인덱스를 추출하여 반환
return [index for _, index in soldiers_count[:k]]
# 예시 입력
mat1 = [
[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]
]
k1 = 3
mat2 = [
[1, 0, 0, 0],
[1, 1, 1, 1],
[1, 0, 0, 0],
[1, 0, 0, 0]
]
k2 = 2
# 결과 출력
print(kWeakestRows(mat1, k1)) # Output: [2, 0, 3]
print(kWeakestRows(mat2, k2)) # Output: [0, 2]
이 코드는 각 행의 군인 수를 계산하고, 이를 이용해 행을 정렬한 후 가장 약한 k개의 행의 인덱스를 반환합니다. 행렬의 각 행은 튜플 형태로 군인 수와 인덱스를 가지고 정렬되며, 이를 통해 약한 행을 쉽게 찾을 수 있습니다.
'python' 카테고리의 다른 글
99클럽 코테 스터디_4기 1일차 TIL (0) | 2024.10.28 |
---|---|
99클럽 코테 스터디 31일차 TIL (0) | 2024.06.29 |
99클럽 코테 스터디 29일차 TIL (0) | 2024.06.27 |
99클럽 코테 스터디 28일차 TIL (0) | 2024.06.25 |
99클럽 코테 스터디 27일차 TIL (0) | 2024.06.24 |