[알고리즘] 월간 코드 챌린지 시즌1 - 두 개 뽑아서 더하기

minidoo·2020년 10월 4일
0

알고리즘

목록 보기
43/85
post-thumbnail

방법1

from itertools import combinations

def solution(numbers):
    
    answer = []
    comb = list(combinations(numbers, 2))
    
    for c in comb:
        answer.append(sum(c))
    
    answer = sorted(list(set(answer)))

    return answer
  • combinations(조합) 을 이용한 방법이다.
  • 2개를 조합하여 comb 배열에 넣는다.
  • comb 배열을 돌면서, 각 원소를 더해준 후 중복을 제거한다.


방법2

from itertools import combinations

def solution(numbers):
    
    answer = []
    comb = list(combinations(numbers, 2))
    
    for c in comb:
        sum_c = sum(c)
        
        if sum_c not in answer:
            answer.append(sum_c)
    
    return sorted(answer)
  • combinations(조합) 을 이용한 방법이다.
  • 2개를 조합하여 comb 배열에 넣는다.
  • comb 배열을 돌면서, 각 원소를 더하고 answer 배열 안에 그 값이 없다면 넣는다.


[방법1] : 각 원소를 더하여 배열에 넣고 중복을 제거한다.
[방법2] : 각 원소를 더하여 중복된 값이 없으면 배열에 넣는다.

⇨ 테스트 케이스마다 효율성 정도가 다르기 때문에, 두 방법 모두 괜찮은 것 같다.


새로 배운 내용

from itertools import permutations

permuations : 순열 (순서가 있음)

from itertools import permutations

a = [1,2,3]
permute = permutations(a,2)

print(list(permute))

<output>
[(1,2),(1,3),(2,1),(2,3),(3,1),(3,2)]

from itertools import combinations

combinations : 조합 (순서가 없음)

from itertools import combinations

a = [1,2,3]
comb = combinations(a,2)

print(list(comb))

<output>
[(1,2),(1,3),(2,3)]

0개의 댓글