문제 설명
정수 배열 numbers가 주어집니다.
numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
문제 유형
- 조합
의사코드
- 자료구조 Set을 변수(set)로 선언한다.
- [반복문] number의 사이즈만큼 반복한다.
- [반복문] number의 사이즈만큼 반복한다.
- set에 numbers[i] + numbers[j]의 합을 저장한다.
- [반복문] number의 사이즈만큼 반복한다.
- [반복문] set의 크기만큼 반복한다.
- set의 요소값을 answer에 저장한다.
- 결과값(answer)을 반환한다.
코드 작성
#include <vector>
#include <set>
using namespace std;
vector<int> solution(vector<int> numbers) {
vector<int> answer;
set<int> set;
for (int i = 0; i < numbers.size(); i++)
{
for (int j = i + 1; j < numbers.size(); j++)
{
set.insert(numbers[i] + numbers[j]);
}
}
for (int data : set)
{
answer.push_back(data);
}
return answer;
}
다른 풀이
#include <vector>
#include <set>
using namespace std;
vector<int> solution(vector<int> numbers) {
vector<int> answer;
set<int> st;
for(int i = 0;i<numbers.size();++i){
for(int j = i+1 ; j< numbers.size();++j){
st.insert(numbers[i] + numbers[j]);
}
}
answer.assign(st.begin(), st.end()); // 새로운 함수 공부
return answer;
}
- Set 데이터를 벡터로 옮길 때 assign()함수를 사용하였다.
'Algorithm > Practice' 카테고리의 다른 글
| [Algorithm] 푸드 파이트 대회 (0) | 2024.12.31 |
|---|---|
| [Algorithm] 가장 가까운 같은 글 (0) | 2024.12.31 |
| [Algorithm] K번째수 (0) | 2024.12.30 |
| [Algorithm] 문자열 내 마음대로 정렬하기 (0) | 2024.12.30 |
| [Algorithm] 시저 암호 (1) | 2024.12.27 |