알고리즘/프로그래머스
[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() 은 같은 요소가 존재할 수 없게 한다.