본문 바로가기
Tests/프로그래머스

[Programmers] 프로그래머스 파이썬 > 월간 코드 챌린지 시즌1 > 두 개 뽑아서 더하기

by 코딩하는 금융인 2020. 11. 1.

문제. 프로그래머스 월간 코드 챌린지 시즌1 두개 뽑아서 더하기


문제 설명

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


제한사항

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

입출력 예

numbers result
[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 해야 합니다.

출처 : 프로그래머스 두 개 뽑아서 더하기

 

코딩테스트 연습 - 두 개 뽑아서 더하기

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

programmers.co.kr


나의 풀이 in Python

#[Programmers] 프로그래머스 파이썬 > 월간 코드 챌린지 시즌1 > 두 개 뽑아서 더하기
from itertools import combinations
# 더하기 함수
def plus(a,b):
    return a+b

def solution(numbers):
    answer = []
    # 서로 다른 인덱스에 있는 두개의 수 조합 활용
    for a,b in list(combinations(numbers,2)):
        answer.append(plus(a,b))
    answer = list(set(answer)) # 중복 제거
    return sorted(answer)

1. 서로 다른 인덱스에 있는 2개의 수를 뽑는 것은 combinations 모듈을 활용하면 쉽게 풀립니다.

2. plus함수를 이용하여 더해주고 set을 이용해 중복을 제거합니다.

3. sorted 함수를 활용하여 오름차순으로 정렬시키면 끝납니다.

반응형

댓글