출처: 프로그래머스 코딩테스트 연습 두 개 뽑아서 더하기
def solution(numbers):
answer = []
for i, a in enumerate(numbers):
for b in numbers[i+1:]:
if a+b not in answer:
answer.append(a+b)
answer = sorted(answer)
return answer
두 개의 수를 뽑아야 하고 서로 다른 수를 뽑아야 하기 때문에 반복문을 두 번 돌린다. 내부 반복분에서는 인덱스가 한 칸 앞선 배열로부터 가져오게 함으로써 같은 인덱스의 값을 더하지 않도록 한다. (인덱스만 다르면 같은 수여도 상관없다.)
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
파이썬을 파이썬답게 강의에서 보았던 itertools
의 combinations
를 사용한 풀이이다. itertools
의 combinations
는 해당 리스트와 몇 개의 요소를 뽑을 것인지 combinations
의 인자로 전달하면 해당 경우의 수를 연산해주는 함수이다.
itertools 모듈에는 반복 가능한 데이터를 처리하는 데 유용한 함수와 제네레이터가 포함되어 있다.
시작 숫자부터 step만큼 무한히 증가하는 제너레이터이다. step이 없다면 1씩 증가한다.
iterable한 객체를 특정 범위로 슬라이싱하고 iterator로 반환한다.
iterable한 객체들을 인수로 받아 하나의 iterator로 반환한다.
예) 리스트 결합, 튜플 결합 등등
필요할 때 찾아보자.ㅎㅎㅎ