알고리즘

programmers 두 개 뽑아서 더하기(Python)

jenyy 2021. 6. 12. 14:11

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

 

코딩테스트 연습 - 두 개 뽑아서 더하기

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한

programmers.co.kr

 

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

 

처음에는 다음과 같이 했는데 테스트케이스 4,5번이 오답이었다. 그래서 set의 정렬부분을 검색해보니 set은 기존 리스트의 순서를 고려하지 않고 중복만을 제거하기 때문에 정렬을 하고 set을 하면 순서가 바뀌게 된다. 그러니 set으로 중복을 먼저 없애고 다시 정렬을 해야함!

 

# 수정 후
def solution(numbers):
    answer = [numbers[i] + numbers[j] for i in range(len(numbers)-1) for j in range(i+1,len(numbers))]
    return sorted(list(set(answer)))