Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 map() 함수를 활용해 1이 가장 많은 행 찾기

2차원 배열이 주어지고, 배열의 요소는 0과 1로만 구성되어 있습니다. 모든 행은 정렬된 상태이며, 이 중에서 1의 개수가 가장 많은 행을 찾아야 합니다. 이 문제는 파이썬 내장 함수인 map()을 사용하면 아주 간단하게 해결할 수 있습니다.

map() 함수는 함수형 프로그래밍에 사용되는 파이썬 내장 함수 중 가장 기본적인 도구로, 시퀀스나 반복 가능한(iterable) 객체에 함수를 일괄 적용할 때 활용됩니다.

예제 입력

입력 배열 : [[0, 1, 1, 1, 1], [0, 0, 1, 1, 1], [1, 1, 1, 1, 1], [0, 0, 0, 0, 1]]
1의 개수가 최대인 행 = 2

알고리즘

문제 해결 과정은 다음과 같습니다.

  1. 1단계: map() 함수를 사용하여 행렬의 각 행별 합계를 계산합니다.
  2. 2단계: 각 행의 1의 합계로 구성된 리스트가 반환됩니다.
  3. 3단계: 리스트에서 최댓값의 인덱스(위치)를 출력합니다.

예제 코드

# Python program to find the row with maximum number of 1's
def maximumofones(n):
    max1 = list(map(sum, n))
    print("MAXIMUM NUMBER OF 1's ::>", max1.index(max(max1)))

# Driver program
if __name__ == "__main__":
    n = [[0, 1, 1, 1, 1], [0, 0, 1, 1, 1], [1, 1, 1, 1, 1], [0, 0, 0, 0, 1]]
    maximumofones(n)

실행 결과

MAXIMUM NUMBER OF 1's ::> 2

코드 설명

map(sum, n)은 2차원 리스트 n의 각 행에 sum() 함수를 적용하여 각 행의 합계를 계산합니다. 각 행은 0과 1로만 이루어져 있으므로, 행의 합계는 곧 해당 행에 포함된 1의 개수와 같습니다.

그다음 max(max1)으로 합계 중 최댓값을 구하고, index() 메서드로 그 값이 위치한 인덱스를 얻어냅니다. 이 인덱스가 바로 1이 가장 많은 행의 번호입니다.

위 예제에서 세 번째 행 [1, 1, 1, 1, 1]의 합이 5로 가장 크므로, 결과로 인덱스 2(0부터 시작하는 위치)가 출력됩니다.