[Py_Lv1] 두 개 뽑아서 더하기

Sunghun📈·2021년 10월 18일
0

프로그래머스

목록 보기
75/93
post-thumbnail

문제 설명

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.

제한사항

  • numbers의 길이는 2 이상 100 이하입니다.
  • numbers의 모든 수는 0 이상 100 이하입니다.

입출력 예시

입출력 예 설명
입출력 예 #1

  • 2 = 1 + 1 입니다. (1이 numbers에 두 개 있습니다.)
  • 3 = 2 + 1 입니다.
  • 4 = 1 + 3 입니다.
  • 5 = 1 + 4 = 2 + 3 입니다.
  • 6 = 2 + 4 입니다.
  • 7 = 3 + 4 입니다.

따라서 [2,3,4,5,6,7] 을 return 해야 합니다.
입출력 예 #2

  • 2 = 0 + 2 입니다.
  • 5 = 5 + 0 입니다.
  • 7 = 0 + 7 = 5 + 2 입니다.
  • 9 = 2 + 7 입니다.
  • 12 = 5 + 7 입니다.
    따라서 [2,5,7,9,12] 를 return 해야 합니다.

접근법

레벨 1 문제지만 그래도 여러가지 문제를 풀고 답안도 참고하면서
아주 조금은 실력이 늘고 있는것 같아 다행이다.

우선, 이 문제를 풀면서 생각나는것은
코딩 테스트 문제다.

sort로 반환값을 한 경우 return 값이 None 나온적인 한 두번이 아니였다.

오늘은 이부분에 대해 학습하고 넘어가야 겠다.

그래서 찾아 본 결과 아래와 같았다.

  • .sort()
    • 원본 list를 정렬하되 반환 값은 None
    • 원본 list의 순서를 변경 (원본 리스트에 영향 있음)
  • sorted()
    • 정렬된 새로운 list를 반환 (원본 list에 영향 없음)
    • 모든 iterable에 동작 (list, tuple, dict, 문자열 등)

결국 return값에 sort()를 써서 반환값이 None값이 나왔던 것이였다.

===========================================================

def solution(numbers):
    answer = []
    
    for i in range(len(numbers)):
        for j in range(i+1,len(numbers)):
            answer.append(numbers[i]+numbers[j])
    return sorted(list(set(answer)))
profile
데이터 분석과 AI 분야의 전문가를 꿈꾸는 청년

0개의 댓글