문제 설명
정수 배열 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] |
내 풀이
i는 0부터, j는 i+1 부터 반복한다.
i = 0 이면, j = 1,2,3,4 까지 반복하고,i = 1이면, j = 2,3,4 까지 반복한다.
numbers의 i,j 인덱스를 더해 집합에 추가한다.
리스트가 아닌 집합으로 이미 존재하는 값은 중복 저장되지 않는다.
집합을 리스트로 변경해 정렬한 리스트를 return 한다.
def solution(numbers):
a = set()
for i in range(len(numbers)):
for j in range(i+1,len(numbers)):
a.add(numbers[i]+numbers[j])
return sorted(list(a))
다른 사람 풀이
새로 알게된 모듈 itertools의 combinations를 사용한다.
combinations는 리스트 내 값들의 모든 조합을 구한다.
ex) (2,1),(2,3) ... 과 같은 형식으로 i[0] = 2, i[1] = 1이 된다.
from itertools import combinations
def solution(numbers):
answer = []
l = list(combinations(numbers, 2))
for i in l:
answer.append(i[0]+i[1])
answer = list(set(answer))
answer.sort()
return answer
728x90
'코딩테스트' 카테고리의 다른 글
[프로그래머스/파이썬] 포켓몬 (0) | 2022.10.12 |
---|---|
[프로그래머스/파이썬] 2016년 (0) | 2022.10.04 |
[프로그래머스/파이썬] 숫자 문자열과 영단어 (0) | 2022.10.02 |
[프로그래머스/파이썬] K번째 수 (0) | 2022.10.02 |
[프로그래머스/파이썬] 문자열 내 마음대로 정렬하기 (0) | 2022.10.01 |