[Python]프로그래머스_Lv1 : 두 개 뽑아서 더하기

Alal11·2022년 8월 8일
0
post-thumbnail

출처

https://school.programmers.co.kr/learn/courses/30/lessons/68644?language=python3


문제 설명

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


제한사항

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

입출력 예

numbersresult
[2, 1, 3, 4, 1][2, 3, 4, 5, 6, 7]
[5, 0, 2, 7][2, 5, 7, 9, 12]

입출력 예 설명

입출력 예 #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. 배열 numbers의 요소들 중 서로 다른 두 개의 수를 더한다.

  2. 중복인 수는 없앤 다음 오름차순으로 정렬하여 리턴한다.


➡️코드(⭕)

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

➡️코드 분석

  1. 이중 for 문을 이용하여 리스트에서 서로 다른 두 수인 numbers[i]와 numbers[j]를 뽑는다.

  2. 두 수를 더한 합을 빈 리스트 answer에 추가한다.

  3. answer에 있는 중복된 값을 제거한다.

  4. 마지막으로 sort() 함수를 사용하여 오름차순으로 정렬 후 리턴해준다.


✍️<set 함수~ 리스트 내 중복 원소 제거>

:: set()는 중복된 값을 허용하지 않는다. 따라서 list를 set으로 변경하면 중복된 값이 제거되며, 그 뒤에 다시 list로 변환하면 중복된 값이 제거된 리스트가 된다.

  • list(set(리스트 변수))
>>> my_list = [10, 22, 19, 22, 1, 10, 4]
>>> result = list(set(my_list))
>>> print(result)
[1, 4, 10, 19, 22]

✍️<sort 함수~ 리스트의 요소를 정렬하기>

:: sort()는 리스트의 요소을 작은 순서대로 정렬한다(오름차순).

  • 변수.sort() 또는 sort(reverse=False) : 리스트의 값을 작은 순서대로 정렬(오름차순)
  • 변수.sort(reverse=True) : 리스트의 값을 큰 순서대로 정렬(내림차순)
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.sort()
>>> a
[10, 15, 20, 20, 30, 40]

➡️end

개념들만 따로 모아서 포스팅을 새로 하는게 나을까? 뭔가 난잡해보인다.. 이모지를 과하게 써서 그런가ㅎㅎ;;

0개의 댓글