/ ALGORITHM

(프로그래머스 with python) 두개 뽑아서 더하기


LEVEL1 두개 뽑아서 더하기

https://programmers.co.kr/learn/courses/30/lessons/68644


combinations()를 사용해서 풀면 크게 어렵지 않게 풀 수 있는 문제였다. 근데 계속 4,5번 테스트케이스가 통과되지 못했다

찾아보니까 set(list(a))는 정렬된 리스트가 나옴을 보장하지 않는다고 한다. set이 해시셋이기 때문에 그렇다고 한다

from itertools import combinations

def solution(numbers):
    answer = []
    result = list(set(combinations(numbers, 2)))
    [answer.append(sum(i)) for i in result]
    answer.sort()
    return list(set(answer))

solution([5,0,2,7])


그럼 sort를 set과 동시에 해주면 끝날 일이였다.. ^^

from itertools import combinations

def solution(numbers):
    answer = []
    result = list(set(combinations(numbers, 2)))
    [answer.append(sum(i)) for i in result]
    return sorted(list(set(answer)))

solution([5,0,2,7])


combinations()없이 푸는 풀이방법이다. 중첩 for문을 사용해서 풀면 된다


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