풀이과정
이중 for문을 돌려 answer 벡터에 합들을 다 넣어준다.
오름차순으로 정렬하고 중복인 숫자는 erase함수로 제거해준다.
풀이1
#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() - 1; i++){
for(int j = i + 1; j < numbers.size(); j++){
answer.push_back(numbers[i] + numbers[j]);
}
}
sort(answer.begin(), answer.end());
answer.erase(unique(answer.begin(), answer.end()), answer.end());
return answer;
}
풀이2
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> numbers) {
vector<int> answer;
vector<int> v;
for(int i = 0; i < numbers.size() - 1; i++){
for(int j = i + 1; j < numbers.size(); j++){
v.push_back(numbers[i] + numbers[j]);
}
}
// sort 오름차순 구현
for(int i = 0; i < v.size(); i++){
for(int j = 0; j < v.size(); j++){
if(v[i] < v[j]){
int temp = v[i];
v[i] = v[j];
v[j] = temp;
}
}
}
// erase 함수 구현
int n = 1;
int temp[10001];
temp[0] = v[0];
for(int i = 1; i < v.size(); i++){
if(v[i] != temp[n - 1]){
temp[n++] = v[i];
}
}
for(int i = 0; i < n; i++){
answer.push_back(temp[i]);
}
return answer;
}
erase 함수 구현할 때, temp 배열의 크기 설정을 잘 해줘야된다.
numbers 배열의 길이가 100이하이므로, 두 수의 합은 100 \* 100 가지의 수므로 10001로 해줘야한다.
'🍞 Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스][Level1] 문자열 내 p와 y의 개수 c++ (0) | 2022.09.02 |
---|---|
[프로그래머스][Level1] 두 정수 사이의 합 c++ (0) | 2022.09.02 |
[프로그래머스][Level1] 나머지가 1이 되는 수 찾기 c++ (0) | 2022.09.02 |
[프로그래머스][Level1] 나누어 떨어지는 숫자 배열 c++ (0) | 2022.09.02 |
[프로그래머스][Level1] 같은 숫자는 싫어 c++ (0) | 2022.09.02 |