두 개 뽑아서 더하기

sky·2022년 7월 6일

Programmers Lv.1(Python)

목록 보기
16/28
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 해야 합니다.

문제 풀이

모든 경우의 수를 추출 가능한 라이브러리를 사용한다.
combination : 순서가 있고 중복 없는 모든 경우의 수를 나열한다. dataset에서 2개를 뽑아 리스트를 만들어주는 역할을 한다.

  1. 두 개씩 뽑아서 조합을 한다. combination을 이용해 모든 경우의 수를 조합한다.
    조합을 하게 되면 [(2,1),(2,3),(2,4),(2,1),(1,3),(1,4)...]이런식으로 결과가 나온다.
  2. 반복문으로 위의 리스트의 요소들을 각각 더한다. 이때, append함수를 쓴다.
  3. set함수를 이용해 중복된 숫자를 제거하고 sorted로 정렬을 한다.

set함수를 사용하면 저절로 정렬이 된다고 알고 있었는데 문제 제출 시 다른 테스트 케이스에서 오류가 발생하기 때문에 정렬 함수도 적어줘야 한다.

Solution

Python

from itertools import combinations
def solution(numbers):
    answer = []
    numbers = list(combinations(numbers,2)) 
    for a,b in numbers:
        answer.append(a+b)
    return sorted(list(set(answer)))

Total Time

  • 2022-07-06 | 16:00 - 16:35 + 16:55 - 17:10 Success!

Review
파이썬은 라이브러리가 많아서 구현하기 굉장히 간편하다.

profile
개발자가 되고 싶은 1人

0개의 댓글