이중 for문 돌리면서 하나씩 계산해주고, answer에 push_back해주었다.
그리고 마지막에 정렬 후,
vector에서 중복되는 값을 뒤로 보낸 후 중복된 값의 첫번째 위치를 반환하는 unique함수를 사용하였다.
그리고 erase로 지우면 해결.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#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();i++){
for(int j=i+1;j<numbers.size();j++){
int tmp = numbers[i]+numbers[j];
answer.push_back(tmp);
}
}
sort(answer.begin(),answer.end());
answer.erase(unique(answer.begin(),answer.end()),answer.end());
return answer;
}
|
cs |
답이 맞았지만, 더 간단하게 풀 수 있었다.
set은 중복을 허용 안하니까 자연스럽게 중복 추가가 안된다.
그리고 assign() (// vector에 새로운 내용 넣기) 함수를 사용하면 간단히 해결 끝
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <string>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
vector<int> solution(vector<int> numbers) {
vector<int> answer;
set<int> sum;
for(int i=0;i<numbers.size();i++){
for(int j=i+1;j<numbers.size();j++){
sum.insert(numbers[i]+numbers[j]);
}
}
answer.assign(sum.begin(),sum.end());
return answer;
}
|
cs |