▶ 문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
▶ 제한사항
- numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
▶ 입출력 예
numbers result
[2,1,3,4,1] | [2,3,4,5,6,7] |
[5,0,2,7] | [2,5,7,9,12] |
▶ 내가 짠 코드
import itertools
def solution(numbers):
answer = []
com =itertools.combinations(numbers,2)
comList = list(com)
for i in range(len(comList)):
answer.append(sum(comList[i]))
return sorted(list(set(answer)))
combination을 이용해 중복하지 않는 조합 가능한 모든 수를 조합한다.
튜플 형식으로 반환하므로 리스트로 형식을 변환한 후 순회하며 각 수들의 합을 더해 answer에 append한다.
이 때, 수는 중복되지 않고 오름차순으로 담아야 하므로
set과 list 변환 그리고 sorted를 사용한다.
▶ 참고사항
다른 사람의 풀이를 참고해보았는데
from itertools import combinations
def solution(numbers):
return sorted(set(sum(i) for i in list(combinations(numbers, 2))))
역시 combinations을 사용하였는데 코드를 정리하여 간단하게 한 줄에 끝냈다.
728x90
'자료구조 & 알고리즘 & cs > CodingTest' 카테고리의 다른 글
프로그래머스 LEVEL1 - 최소직사각형 (0) | 2022.06.17 |
---|---|
프로그래머스 LEVEL1 - 2016년 (0) | 2022.06.16 |
프로그래머스 LEVEL1 - 예산 (0) | 2022.06.15 |
프로그래머스 LEVEL1 - 3진법 뒤집기 (0) | 2022.06.15 |
프로그래머스 LEVEL1 - 약수의 개수와 덧셈 (0) | 2022.06.14 |