[C++] 두 개 뽑아서 더하기

hyeon·2021년 4월 12일
0

Programmers

목록 보기
15/18

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?

profile
바스락바스락

0개의 댓글