[프로그래머스] 두 개 뽑아서 더하기 / C++
문제
문제를 보시려면 링크를 클릭해주세요.
풀이
sort
, unique
함수를 사용하기 위해 algorithm 헤더를 include 해줍니다.
두 개의 수를 뽑아 더할 수 있는 모든 경우를 찾아, answer 벡터에 더한 결과값을 push 합니다.
unique 함수(중복 제거)를 사용하기 위해서는 정렬을 해줘야하므로 answer 벡터를 오름차순 정렬해줍니다.
unique 함수는 중복되지 않는 원소들을 앞에서부터 순차적으로 담아주며, 중복 원소들은 제일 뒷부분(쓰레기 값)으로 보낸다.
unique 함수의 반환값은 vector 쓰레기 값의 첫번째 위치이다.
erase 함수를 사용하여 중복 제거하고 남은 벡터 뒷부분의 쓰레기 값을 제거해줍니다.
소스 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#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;
}
This post is licensed under CC BY 4.0 by the author.
Comments powered by Disqus.