본문 바로가기

항해99 chap02

배열 파티션

배열 파티션

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


def arrayPairSum(nums):
    nums.sort()
    answer = 0
    for i in range(len(nums)):
        if (i % 2 == 0):
            answer += nums[i]
    return answer


nums = [1, 4, 3, 2]
print(arrayPairSum(nums))

#아이디어

  1. 정렬되지 않은 배열을 오름차순으로 정렬을한다. ex) [1,2,3,4]
  2. min(a,b)의 합들중 가장 큰 수를 구하기 위해서는 짝수번째 수들의 합이다.

답지풀이

def arrayPairSum(nums):
    nums.sort()
    answer = 0
    return sum(sorted(nums)[::2])
nums = [1, 4, 3, 2]
print(arrayPairSum(nums))
  • 짝수번째 들의 합을 for문을 직접 돌려서 if문으로 거르는것이 아니라 Slicing으로 쉽게 구현
    • list[시작인덱스 : 끝인덱스 : 인덱스 증가폭]

배운것

파이썬의 기능을 사용하면 더 짧고 간결한 코드를 구현할수 있다.

'항해99 chap02' 카테고리의 다른 글

홀짝 연결 리스트  (0) 2022.01.18
역순 연결 리스트  (0) 2022.01.18
두 정렬 리스트의 병합  (0) 2022.01.18
그룹 애너그램  (0) 2022.01.18
가장 긴 펠린드롬 부분 문자열  (0) 2022.01.18