[프로그래머스] 두 개 뽑아서 더하기 문제풀이 python

mauz·2022년 5월 24일
0

🐒 문제

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

✍ 나의 풀이

def solution(numbers):
    sums = set()

    for i in range(len(numbers)):
        for j in range(i+1, len(numbers)):
           sums.add(numbers[i]+numbers[j])

    return sorted(sums)

왜 정렬하기 전에 set는 정렬되어 있는 것 처럼 보이는건가

sorted에 집합을 넣을때 굳이 list로 만들지 않아도 되더라~
-> 모든 iterable을 넣을 수 있고, list로 반환됌


🧠 문제 이해

두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 구해야한다.

예를 들어

numbers = [2,1,3,4,1]
---------------------
2 + 1
2 + 3
2 + 4
2 + 1
---------------------
1 + 3
1 + 4
1 + 1
---------------------
3 + 4
3 + 1
---------------------
4 + 1

처럼 number의 인덱스를 하나씩 증가시키면서 현재 인덱스 다음부터 끝까지의 수들을 하나씩 더한 결과를 저장하면 원하는 결과를 얻을 수 있다.

다만 결과에서 중복된 수가 나올 수 있기 때문에 파이썬의 집합 자료형을 이용해 중복을 제거할 수 있다.

집합으로 중복을 제거한 뒤에는 오름차순으로 정렬된 배열을 출력하기위해

sorted함수를 이용해 결과를 정렬한다.


🔍 다른 풀이

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)))

본 문제에서 가장 많은 좋아요를 받은 코드이다.
마지막에서 집합으로 중복을 제거하는 부분 외에는 아이디어는 동일하다

profile
쥐구멍에 볕드는 날

0개의 댓글