프로그래머스/1레벨
두 개 뽑아서 더하기
Koalitsiya
2022. 12. 24. 14:01
문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
제한사항
- numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
풀이 방법
1. 이중 반복문을 통해 numbers.at(i)와 numbers.at(j)를 더한 값을 모두 answer에 담는다.
2. answer의 원소들을 오름차순으로 정렬한다.
3. unique 함수를 이용하여 answer 내부의 중복되는 원소들을 뒤로 밀어주고 unique 함수가 중복 없이 나열된 마지막 원소의 다음 인덱스를 반환하는 것을 이용해서 해당 리턴값부터 answer.end()까지 삭제해준다.
4. answer를 리턴한다.
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
vector<int> solution(vector<int> numbers) {
vector<int> answer;
for (int i = 0; i < numbers.size() - 1; i++){
for (int j = i + 1; j <numbers.size(); j++)
answer.push_back(numbers.at(i) + numbers.at(j));
}
sort(answer.begin(), answer.end());
answer.erase(unique(answer.begin(), answer.end()), answer.end());
return answer;
}