출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

 

문제는 보기와 같았다. 결국 주어진 숫자 list에서 numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 list에 오름차순으로 담아야한다.  (경우의 수에서 조합이랑 비슷하다). 다음과 같이 코드를 짜봤다:

import sys

def solution(numbers):
    answer1 = []
    for i in range(len(numbers)):
        for j in range(i+1, len(numbers)):
            answer1.append(numbers[i]+numbers[j])
    answer = list(dict.fromkeys(answer1))
    answer.sort()
    return answer

 

우선 numbers라는 list의 길이만큼 range를 만든다. 그리고, j는 i보다 한 수 위의 인덱스부터 시작하게끔 range(i+1, len(numbers))로 지정해줬다. 그리고 answer1 list에 i에 있는 숫자와, j에 있는 숫자와 더해주고 answer1 list에 append해준다(numbers[i] + numbers[j])

dict.fromkeys()는 list 안에 있는 value들 중, 중복 되는 값을 하나로 통일시켜주는 function이다

따라서 answer는 answer1에서 dict.fromkeys()를 이용해 이끌어내고, answer.sort()를 이용해 오름차순으로 정리해준다.