알고리즘/프로그래머스

[Level1] 두 개 뽑아서 더하기

야챔 2021. 4. 6. 15:32

링크 : programmers.co.kr/learn/courses/30/lessons/68644

 

 

내 풀이

def solution(numbers):
    result = []
    for i in range(len(numbers)):

        for j in range(1, len(numbers)):
            if(i == j):
                continue
            a = numbers[i] + numbers[j]

            if a not in result:
                result.append(a)
    result.sort()
    return result

다른 인덱스의 두 개의 수를 뽑아야해서 이중 for문을 사용하였고

더한 값이 중복되는 경우가 없어서 not in을 사용하였다.

 

후에 출력해보니 numbers[3] + numbers[3] 이렇게 인덱스가 겹치는 경우가 있었다.

문제에선 다른 인덱스 두 개를 뽑으라고 해서 i == j 이면 continue를 사용하였다.

 

 

 

 

 

다른 사람 풀이

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

i+1을 함으로써 i == j 가 되지 않도록 하였다...

그리고 여기선 not in 대신 set을 사용하였다.

set() 은 같은 요소가 존재할 수 없게 한다.