[Programmers] 두 개 뽑아서 더하기

suhyun·2021년 10월 14일
0

백준/프로그래머스

목록 보기
2/81

문제 링크

Level1. 두 개 뽑아서 더하기

문제 풀이

from itertools import combinations

def solution(numbers):
    num_list = list(combinations(numbers, 2))
    sum_list = []
    for i in num_list:
        sum_list.append(sum(i))
    return sorted(set(sum_list))
  • combinations를 통해 numbers의 원소 두개씩 묶기
  • num_list속의 각각의 tuple들의 원소합을 sum_list에 추가
  • sum_list의 중복을 제거하기 위해 set으로 변환
  • 오름차순으로 정렬하기 위해 sorted함수 사용



필요 개념

하나의 리스트에서 모든 조합을 계산해야하는 경우

Permution(순열): 서로 다른 n개 중 r개를 골라 순서를 정해 나열하는 가짓 수
Combination(조합): 서로 다른 n개 중 r개를 골라 조를 만드는 가짓 수 

예시)

from itertools import permutations
from itertools import combinations 

arr = ['A', 'B', 'C']
permutations_list = list(permutations(arr,2))
combinations_list = list(combinations(arr, 2))

print(permutations_list)
print(combinations_list)
[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
[('A', 'B'), ('A', 'C'), ('B', 'C')]

💡후기

이전에 combinations문제를 풀어봐서 쉽게 풀 수 있었다
permutations은 이번에 처음 보는 함수였다

profile
꾸준히 하려고 노력하는 편 💻

0개의 댓글