문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
나의 풀이
from itertools import combinations
def solution(numbers):
answer = []
for (a, b) in combinations(numbers, 2):
answer.append(a + b)
return list(sorted(set(answer)))
이전에 조합 문제를 풀었던 경험으로 itertools의 패키지에서 combination 함수를 불러 리스트에 append 해주면 된다. return시에 sorted를 먼저해주고 set을 해줘 중복을 제거했을 때에는 2개의 테스트 케이스에서 실패가 떴지만 둘의 순서를 바꿔주니 통과가 되었다.
set()함수를 이용해 중복을 제거를 해주며 기존 리스트의 순서를 유지하려면 추가적인 세팅이 필요해 단순히 set(sorted(...))를 해주는 것이 옳지 않다. 이에 대한 내용은 다음 블로그에서 확인 할 수 있다.
python 리스트 중복 제거 : https://m31phy.tistory.com/130
[Python] 리스트 중복 제거 (순서 유지 X, 순서 유지 O)
Python에서 리스트의 중복을 제거하는 경우, 크게 두 가지 경우를 생각해볼 수 있다. • 리스트의 중복만을 제거하는 경우 ( 기존 리스트의 순서는 고려 x) • 리스트의 중복을 제거하되 기존 리스
m31phy.tistory.com
문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/68644
코딩테스트 연습 - 두 개 뽑아서 더하기
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한
programmers.co.kr
'Algorithm > Daily Coding Tests Challenge' 카테고리의 다른 글
[프로그래머스 코딩테스트] 8월 1주차 : 부족한 금액 계산하기 (0) | 2021.08.02 |
---|---|
[프로그래머스 코딩테스트] lv1. 2016년 (0) | 2021.08.02 |
[프로그래머스 코딩테스트] lv1. 예산 (0) | 2021.08.02 |
[프로그래머스 코딩테스트] lv1. 3진법 뒤집기 (0) | 2021.08.02 |
[프로그래머스 코딩테스트] lv1. 실패율 (0) | 2021.07.30 |