
1
- set을 이용하면 중복을 없앨 수 있음 -> set 쓰고싶음
- set을 이용하면 binary search tree 형태 반환되니까 sort를 하지 않아도 될 것임 & 중복 안되는 최적의 구조
- n^2 으로 답을 구하고 set을 사용하여 중복 없애기
but -> c++ 초심자...
#include <string>
#include <vector>
#include <iostream>
#include <set>
using namespace std;
set<int> add_two(vector<int>n){
vector<int> answer;
std::vector<int>::iterator it;
for (int i = 0; i < n.size()-1; i++) {
for (int j = i+1; j <n.size(); j++) {
answer.insert(answer.begin(), n.at(i) + n.at(j));
}
}
set<int> s(answer.begin(), answer.end());
return s;
}
vector<int> solution(vector<int> numbers) {
set<int> s = add_two(numbers);
vector<int> v(s.begin(), s.end());
return v;
}
int main() {
vector<int>input, output;
input = {2,1,3,4,1};
output = solution(input);
for(const auto itr:output) {
cout << itr << " ";
}
return 0;
}
2
- set은 insert
- vector은 pushback
- set -> vector => vector.assign({iter},{iter})
#include <string>
#include <vector>
#include <iostream>
#include <set>
using namespace std;
set<int> add_two(vector<int>n){
set<int> s;
for (int i = 0; i < n.size()-1; i++) {
for (int j = i+1; j<n.size(); j++) {
s.insert(n.at(i) + n.at(j));
}
}
return s;
}
vector<int> solution(vector<int> numbers) {
set<int> s = add_two(numbers);
vector<int> answer;
answer.assign(s.begin(), s.end());
return answer;
}
int main() {
vector<int>input, output;
input = {2,1,3,4,1};
output = solution(input);
for(const auto itr:output) {
cout << itr << " ";
}
return 0;
}
C++ iterator?