728x90
반응형
문제 설명
해당 문제는 정수 배열 numbers에서 서로 다른 인덱스에 있는 두 수를 골라 더할 수 있는 모든 경우의 수를 구하고, 그 결과를 오름차순 정렬된 배열로 반환하는 문제이다.
핵심 방법
중복 제거를 위해 set을 사용하면 코드가 간결해지고, 자동 정렬도 된다.
i와 j 쌍을 중복되지 않게 고르기 위해 j = i+1부터 시작하는 것이 중요하다.
set에 대한 자세한 설명은 아래 링크에 정리해두었다.
중복을 방지해주는 자료구조 Set
set은 중복을 허용하지 않는 자료구조이다. 즉 set에 중복된 값을 넣을 시 한 번만 저장된다. set은 2가지 종류가 있는데 set과 unordered_set이다. unordered_set은 unordered_map과 마찬가지로
jinho082008.tistory.com
#include <string>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
vector<int> solution(vector<int> numbers) {
vector<int> answer; // 결과를 담을 벡터
set<int> s; // 중복 제거 및 정렬을 위한 set 선언
// 모든 서로 다른 두 수의 조합을 순회
for(int i = 0; i < numbers.size(); ++i)
{
for(int j = i + 1; j < numbers.size(); ++j)
{
s.insert(numbers[i] + numbers[j]); // 두 수의 합을 set에 추가
}
}
// set을 벡터로 변환 (자동 오름차순 정렬)
answer.assign(s.begin(), s.end());
return answer; // 결과 반환
}
728x90
반응형
'프로그래밍 > 코딩테스트' 카테고리의 다른 글
코딩테스트 : 베스트 앨범 (0) | 2025.04.18 |
---|---|
코딩테스트 : 최고의 집합 (0) | 2025.04.18 |
코딩테스트 : 숫자 문자열과 영단어 (0) | 2025.04.17 |
코딩테스트 : 문자열 내 마음대로 정렬하기 (0) | 2025.04.17 |
코딩테스트 : [1차] 비밀지도 (0) | 2025.04.17 |