https://school.programmers.co.kr/learn/courses/30/lessons/68644?language=python3
정수 배열 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] |
배열 numbers의 요소들 중 서로 다른 두 개의 수를 더한다.
중복인 수는 없앤 다음 오름차순으로 정렬하여 리턴한다.
def solution(numbers):
answer = [] # 빈 리스트 만들기
for i in range(len(numbers)):
for j in range(i + 1, len(numbers)):
answer.append(numbers[i] + numbers[j]) # 두 수 더한 값 answer에 추가하기
answer = list(set(answer)) # 중복인 수 없애기
answer.sort() # 오름차순으로 정렬
return answer
이중 for 문을 이용하여 리스트에서 서로 다른 두 수인 numbers[i]와 numbers[j]를 뽑는다.
두 수를 더한 합을 빈 리스트 answer에 추가한다.
answer에 있는 중복된 값을 제거한다.
마지막으로 sort() 함수를 사용하여 오름차순으로 정렬 후 리턴해준다.
:: set()는 중복된 값을 허용하지 않는다. 따라서 list를 set으로 변경하면 중복된 값이 제거되며, 그 뒤에 다시 list로 변환하면 중복된 값이 제거된 리스트가 된다.
>>> my_list = [10, 22, 19, 22, 1, 10, 4]
>>> result = list(set(my_list))
>>> print(result)
[1, 4, 10, 19, 22]
:: sort()는 리스트의 요소을 작은 순서대로 정렬한다(오름차순).
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.sort()
>>> a
[10, 15, 20, 20, 30, 40]
개념들만 따로 모아서 포스팅을 새로 하는게 나을까? 뭔가 난잡해보인다.. 이모지를 과하게 써서 그런가ㅎㅎ;;