갱스터하우스

[Python] Lv1.두 개 뽑아서 더하기 본문

코테 문제/프로그래머스

[Python] Lv1.두 개 뽑아서 더하기

승갱 2022. 4. 12. 22:42

https://programmers.co.kr/learn/courses/30/lessons/68644

 

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

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

programmers.co.kr

 

 

 

 

 

 

문제 설명

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

 

제한사항

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

 

나의 접근방법 및 풀이

numbers에서 서로 다른 인덱스를 뽑는 방식은 소수만들기에서 썼던 for() 문을 이용했다.

리스트에 두 수의 합을 추가하고, 이때 중복되는 합이 발생하기 때문에 set()을 이용하여 중복을 제거하고 마지막으로 sorted()를 이용하여 오름차순을 정렬하여 return 했다.

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 = list(set(answer))
    return sorted(answer)
    
    ##6-7줄을 한줄로 쓸 수 있다.
    ##return sorted(list(set(answer)))

 

 

다른 풀이

for() 문대신 combinations을 사용하여 문제를 풀었다.

from itertools import combinations

def solution(numbers):
    answer = []
    l = list(combinations(numbers, 2))

    for i in l:
        answer.append(i[0]+i[1])
    answer = list(set(answer))
    answer.sort()

    return answer