삼총사를 복습할 수 있엇던 문제였다.
from itertools import combinations
def solution(numbers):
ans = []
for x in combinations(numbers,2):
if sum(x) not in ans:
ans.append(sum(x))
return sorted(ans)
성능 고민 없이 해보았는데 나온 결과가 시간이 너무 걸려서 이건 아닌 것 같음.. 이런 방식은 LV0 100문제를 풀 때 주로 사용했는데 LV0에선 리스트를 이용해서 성능 고민 없이 우선 해결 + 파이썬 적용이 목표였었다
from itertools import combinations
def solution(numbers):
thisdict = dict()
for x in combinations(numbers,2):
sm = sum(x)
thisdict[sm] = sm
return sorted(thisdict.keys())
딕셔너리에 넣는 과정에서 중복되는 값은 제외되게 된다.
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)))
itertools 에서 combinations를 import하지 않고 for-loop 으로 조합을 만들어주는 풀이이다. 그런데 제일 우수한 성능을 보여줌.
👉 2개를 뽑아서 만드는 조합은 for-loop으로만 하는게 나을 것 같음
테스트 1 〉 통과 (0.00ms, 9.89MB) 통과 (0.01ms, 10.1MB) 통과 (0.01ms, 10.2MB)
테스트 2 〉 통과 (0.02ms, 10.2MB) 통과 (0.01ms, 9.93MB) 통과 (0.01ms, 10.1MB)
테스트 3 〉 통과 (0.01ms, 10.3MB) 통과 (0.01ms, 10MB) 통과 (0.01ms, 10.4MB)
테스트 4 〉 통과 (0.01ms, 10.1MB) 통과 (0.01ms, 10.1MB) 통과 (0.01ms, 10.2MB)
테스트 5 〉 통과 (0.03ms, 10.2MB) 통과 (0.02ms, 9.95MB) 통과 (0.02ms, 10.1MB)
테스트 6 〉 통과 (0.21ms, 9.97MB) 통과 (0.04ms, 10.4MB) 통과 (0.03ms, 10.1MB)
테스트 7 〉 통과 (4.65ms, 10.2MB) 통과 (0.97ms, 10.1MB) 통과 (0.43ms, 10.1MB)
테스트 8 〉 통과 (1.98ms, 10.2MB) 통과 (0.60ms, 10.2MB) 통과 (0.48ms, 10.2MB)
테스트 9 〉 통과 (0.49ms, 10MB) 통과 (0.79ms, 10.1MB) 통과 (0.67ms, 10.3MB)