정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
numbers | result |
---|---|
[2,1,3,4,1] | [2,3,4,5,6,7] |
[5,0,2,7] | [2,5,7,9,12] |
from itertools import combinations
def solution(numbers):
arr = []
for i in combinations(numbers, 2):
arr.append(sum(i))
return sorted(list(set(arr)), reverse=False)
itertools 라이브러리를 사용했습니다.
itertools는 효율적인 루핑을 위한 이터레이터를 만드는 라이브러리입니다.
몇 가지 있는데,
이번엔 combinations라고 원소 개수가 n개인 조합을 뽑는 함수입니다.
combinations(배열, 조합할 원소 수)
for i in combinations(numbers, 2):
print(i)
-----------------------------------
(2, 1)
(2, 3)
(2, 4)
(2, 1)
(1, 3)
(1, 4)
(1, 1)
(3, 4)
(3, 1)
(4, 1)
조합해서 나온 수들을 합해서 arr 배열에 추가합니다.
중복을 제거해야 하기에 set()을 사용했지만, set()의 경우 사용하면 순서가 섞이기에 sorted()를 사용했고, 오름차순으로 해야하기에 reverse를 false로 주었습니다.