문제 설명

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

제한사항

  • numbers의 길이는 2 이상 100 이하입니다.
    • numbers의 모든 수는 0 이상 100 이하입니다.
  • 문제 보러가기


문제 풀이

(1) Pseudo-Code

  • numbers에 있는 숫자들을 2개로 묶어 만들 수 있는 조합을 comb 변수에 리스트로 저장한다.
  • 2개로 묶은 조합의 합을 중복제거하고 다시 리스트형태로 변환한다.
  • 마지막으로 오름차순으로 정렬한 리스트를 반환한다.

(2) 코드 작성

from itertools import combinations

def solution(numbers):
    comb = list(combinations(numbers, 2))
    add_comb = list(set([sum(c) for c in comb]))
    return sorted(add_comb)

(3) 코드 리뷰

처음에 set으로 중복 제거 후, list로 변환한 값을 반환할 수 있도록 코드를 작성했는데 테스트 4, 5에서 실패 sign이 떴다. 이유를 생각해 보니 set 함수를 사용하면 순서가 무너진다는 것인데 set으로 중복을 제거하면 기존 List의 순서가 유지되지 않기 때문에 set -> list -> 정렬 순으로 코드를 작성하니 통과되었다. set 함수를 사용하면 기존의 정렬이 무너진다는 것을 잊지 말아야겠다.

👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기