[프로그래머스] 두 개 뽑아서 더하기 | Python 문제풀이
1분 미만
두 개 뽑아서 더하기

문제 설명
정수 배열 numbers가 주어집니다.
numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
solution
리스트 numbers의 모든 가능한 두 수의 조합의 합을 계산하고, 중복을 제거한 후 정렬하는 방법입니다.
def solution(numbers):
answer = []
for x in range(len(numbers)):
for y in range(x + 1, len(numbers)):
answer.append(numbers[x] + numbers[y])
return sorted(set(answer)) # 정렬 및 중복 제거
코드 리펙토링
def solution(numbers):
answer = set() # 중복 허용 안함
for i in range(len(numbers)):
for j in range(i + 1, len(numbers)):
answer.add(numbers[i] + numbers[j])
return sorted(answer) # 중복 제거
Set을 사용한 중복 제거: 합을 계산하면서 바로 set에 추가함으로써 중복된 결과를 처음부터 피할 수 있습니다. 이렇게 하면 나중에 set을 list로 변환하고 정렬하는 단계가 필요합니다.
더 적은 메모리 사용: 중간 리스트 answer를 사용하지 않고, 결과를 직접 set에 추가함으로써 메모리 사용을 줄일 수 있습니다.