C++ Algorithm & Study/C++ & Algorithm Strategies

[Programmers] 두 개 뽑아서 더하기

GameChoi 2023. 1. 31. 21:13

https://school.programmers.co.kr/learn/courses/30/lessons/68644

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

0. Headers

#include <vector>
#include <set>

1. 알고리즘

 - 문제를 보고 Set을 사용하면 Key 값에 중복을 허락하지 않으므로 사용

    - 두 값을 더해 Set에 저장하면 중복된 값은 알아서 삭제

vector<int> solution(vector<int> numbers) {
    set<int> temp;
    
    for (int i = 0; i < numbers.size(); i++)
        for (int j = i + 1; j < numbers.size(); j++)
            temp.insert(numbers[i] + numbers[j]);
}

 - Set에서 Vector로 변환하기 위해 STL을 사용하여 Vector에 저장

vector<int> solution(vector<int> numbers) {
    std::vector<int> answer(temp.begin(), temp.end());
    return answer;
}

2. 완성 코드

#include <vector>
#include <set>

using namespace std;

vector<int> solution(vector<int> numbers) {
    set<int> temp;
    
    for (int i = 0; i < numbers.size(); i++)
        for (int j = i + 1; j < numbers.size(); j++)
            temp.insert(numbers[i] + numbers[j]);
    
     std::vector<int> answer(temp.begin(), temp.end());
    
    return answer;
}