
프로그래머스 LV1 두개 뽑아서 더하기
2021, Mar 30
프로그래머스 lv1 두개 뽑아서 더하기 파이썬
서로 다른 인덱스에 있는 두개의 수를 뽑는다는 말을 보자마자 ‘조합’combinations
를 떠올려야 했다.
파이썬 기본 라이브러리인 itertools
에서 combinations
라는 내장함수를 사용하여 인자값에 따라 해당 요소로 구할 수 있는 모든 조합을 리턴한다.
풀이
from itertools import combinations
def solution(numbers):
answer = set()
for i in list(combinations(numbers,2)):
answer.add(sum(i))
return sorted(answer)
풀이2
from itertools import combinations
def solution(numbers):
return sorted(list(set([sum([i,j]) for i,j in combinations(numbers,2)])))
1.numbers 리스트에서 2개를 뽑아서, 2.더한 후에 3.리스트로 정리하여 4.set()
함수로 중복을 없앤다. 그리고 5.sorted를 이용해서 정렬해주면 끝
함수 정리
set()
함수는 순서 상관없이 집합으로 만들어주며 중복값을 자동으로 제거한다.
# set 생성자에 iterable한 객체를 넣으면 변환하여 set을 만들어 줍니다.
# 물론 set생성자 없이 바로 중괄호 안에 값을 넣어도 됩니다.
>>> s = set([1,3,5,7])
>>> s
{1, 3, 5, 7}
>>> p = {1, 3, 5, 7}
>>> p
{1, 3, 5, 7}
# 중복된 값은 자동으로 중복이 제거 됩니다.
>>> s = {1, 5, 1, 1, 1, 3, 7}
>>> s
{1, 3, 5, 7}
-
itertools.combinations(iterable, r)
-
- 입력 iterable에서 요소의 길이 r 서브 시퀀스들을 반환한다.
-
- 조합(combination) 튜플은 입력 iterable의 순서에 따라 사전식 순서로 방출된다. 따라서, 입력 iterable이 정렬되어있으면, 조합 튜플이 정렬된 순서로 생성된다..
-
- 요소는 값이 아니라 위치로 고유성을 다룬다. 따라서 입력 요소가 고유하면, 각 조합에 반복 값이 없다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges