문제

https://programmers.co.kr/learn/courses/30/lessons/68644?language=python3

풀이

def solution(numbers):
    from itertools import combinations
    return sorted(list(set(map(lambda x: x[0]+x[1],list(combinations(numbers, 2))))))

파이써닉하게 짜는데 집중한 코드.
itertools를 사용 못하게 하는 코테도 있다는데,
이리도 간편하고 재밌는 걸?


💡 2020-11-04 설명 추가

두 개 뽑아서 더하기 파이썬 키워드로 많이 유입된다는 Goole Search Console 보고를 받아서
추가적인 설명을 달아놓는게 좋겠다는 생각이 들어 추가 설명을 기록한다.

def solution(numbers):
    from itertools import combinations

itertools 모듈의 combinations(조합) 메소드를 사용하겠다고 선언.

    list(combinations(numbers, 2))

combinations 의 매개변수로 조합을 진행할 리스트 numbers와, 조합 원소 개수 2를 입력해준다.
combinations 메소드의 반환타입이 tuple 이므로, list함수로 2차원 list화 시켜준다.

    map(lambda x: x[0]+x[1],list(combinations(numbers, 2)))

map 을 이용해서 2차원 list를 열끼리 더해진 값을 담은 1차원 list로 변환한다.
‘열끼리 더해진 값’을 lambda식으로 표현한 것이다.

    return sorted(list(set(map(lambda x: x[0]+x[1],list(combinations(numbers, 2))))))

map 을 이용해서 만들어진 1차원 list에는 중복되는 값이 담겨 있을 수도 있다.
set을 이용해서 중복을 제거시켜주고, 최종 제출해야할 자료형이 list 이므로 list 화 시켜준다.
마지막으로 오름차순 정렬을 진행하면 최종 제출 답이 완성된다.


최대한 설명을 풀어서 써본다고 써봤는데, 도움이 되었으면 좋겠다.
🤔..

댓글남기기