본문으로 건너뛰기

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

LEGGO1분 미만ProgrammersLv.1

두 개 뽑아서 더하기

문제: 두 개 뽑아서 더하기open in new window
문제: 두 개 뽑아서 더하기

문제 설명

정수 배열 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) # 중복 제거
  1. Set을 사용한 중복 제거: 합을 계산하면서 바로 set에 추가함으로써 중복된 결과를 처음부터 피할 수 있습니다. 이렇게 하면 나중에 set을 list로 변환하고 정렬하는 단계가 필요합니다.

  2. 더 적은 메모리 사용: 중간 리스트 answer를 사용하지 않고, 결과를 직접 set에 추가함으로써 메모리 사용을 줄일 수 있습니다.