[파이썬 알고리즘 인터뷰] 배열 파티션 1.

2021. 1. 5. 10:52노트/Algorithm : 알고리즘

n개의 pair를 이용한 min(a,b)의 합으로 만들 수 있는 가장 큰 수를 출력하라.

  • 입력

[1,4,3,2]

 

  • 출력

4

 

  • 설명

n은 2가 되며, 최대 합은 4이다

min(1,2) + min(3,4) = 4

 

 

# 풀이 1. 오름차순 풀이 
def arrayPairSum(nums):
    sum = 0 
    pair = [] 
    nums.sort()
    
    for n in nums:
        # 앞에서부터 오름차순으로 페어를 만들어서 합 계산 
        pair.append(n)
        if len(pair) == 2:
            sum+= min(pair)
            pair = [] 
    
    return sum 
    
nums = [1,4,3,2]
arrayPairSum(nums)
>>> 4 

# 풀이 2. 짝수 번째 값 계산 
def arrayPairSum(nums):
    sum = 0 
    nums.sort()
    
    for i, n in enumerate(nums):
        # 짝수 번째 값의 합 계싼 
        if i %2 ==0:
            sum += n 
            
    return sum 
    
nums = [1,4,3,2]
arrayPairSum(nums)
>>> 4
# 풀이 3. 파이썬 다운 방식 
def arrayPairSum(nums):
    return sum(sorted(nums)[::2])
    
nums = [1,4,3,2]
arrayPairSum(nums)
>>> 4