Algorithm_두 개 뽑아서 더하기

BLAKE KIM·2020년 10월 4일
0

출처: 프로그래머스 코딩테스트 연습 두 개 뽑아서 더하기

두 개 뽑아서 더하기

나의 답안

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

파이썬을 파이썬답게 강의에서 보았던 itertoolscombinations를 사용한 풀이이다. itertoolscombinations는 해당 리스트와 몇 개의 요소를 뽑을 것인지 combinations의 인자로 전달하면 해당 경우의 수를 연산해주는 함수이다.

itertools

itertools 모듈에는 반복 가능한 데이터를 처리하는 데 유용한 함수와 제네레이터가 포함되어 있다.

count(시작, [step])

시작 숫자부터 step만큼 무한히 증가하는 제너레이터이다. step이 없다면 1씩 증가한다.

islice(iterabler객체, [시작], 정지[, step])

iterable한 객체를 특정 범위로 슬라이싱하고 iterator로 반환한다.

chain(*iterable)

iterable한 객체들을 인수로 받아 하나의 iterator로 반환한다.
예) 리스트 결합, 튜플 결합 등등

필요할 때 찾아보자.ㅎㅎㅎ

profile
BackEnd

0개의 댓글