[python_파이썬_pass]프로그래머스_LV1_두 개 뽑아서 더하기_풀이

2024. 5. 10. 12:24코드리뷰

728x90
반응형

공부하는허딩크 : https://www.youtube.com/live/kdCOczz1e9c?feature=shared

조합을 풀기에 가장 좋은 문제인 것 같다.

 

<첫번째 시도 : 통과>

combinations를 사용하여 2개짜리 조합을 만들어 준 뒤 각 배열을 sum으 해주고 중복되지 않게 리스트를 구성한다.

itertools의 combinations와 continue, append, sum, sort를 사용해서 코드를 작성했다.

import itertools

def solution1(numbers):
    answer = []
    for i in itertools.combinations(numbers, 2):
        if sum(i) in answer:
            continue
        else:
            answer.append(sum(i))
    answer.sort()
    return answer

 

<두번째 시도 : 통과>

함수로만 하면 재미 없으니 다른 함수를 사용해서 풀이를 해 보았다. 

이중for문으로 숫자가 겹치지 않게 만들고, append, set, sorted를 사용해서 코드를 작성했다.

def solution(numbers):
    answer = []
    for i in range(len(numbers)):
        for j in range(i + 1, len(numbers)):
            answer.append(numbers[i] + numbers[j])
    temp = set(answer)
    A_sorted = sorted(temp)
    return A_sorted

 

 

<다른사람풀이>

1. sorted(set(answer)) 이게 한번에 안되던데 sorted는 튜플은 안됨 => 그냥 list()로 만들어서 하면 된다.

   ㄴ sorted(list(set(answer)))

2. 한줄 코드 :

sorted(set(sum(i) for i in list(combinations(numbers, 2))))

 

728x90
반응형