접근 방법
- 리스트로부터 조합 추출
- 조합을 모두 더해준 후 중복 제거, 정렬
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> numbers) {
vector<int> answer;
for(int i = 0; i < numbers.size()-1; i++){
for(int j = 1; j < numbers.size()-i; j++){
answer.push_back(numbers[i]+numbers[i+j]);
}
}
sort(answer.begin(), answer.end());
answer.erase(unique(answer.begin(), answer.end()), answer.end());
return answer;
from itertools import combinations
def solution(numbers):
answer = []
comb = list(combinations(numbers, 2))
for a, b in comb:
answer.append(a+b)
answer = list(sorted(set(answer)))
# 이렇게 하면 케이스 2개에 대해서 틀린다
# answer = list(set(sorted(answer)))
return answer
중복제거와 정렬 사이에 무슨 관계가 있길래 이 두 과정이 바뀌면 틀리는 케이스가 생기는걸까???
한참 고민했는데 설마설마 하면서 바꾸어봤더니 통과했다 ..
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)))
그냥 이중반복문으로 푼 사람들이 많은 것 같다.
내가 C++로 풀었던 방식과 동일하다.