반응형

https://programmers.co.kr/learn/courses/30/lessons/68644

 

코딩테스트 연습 - 두 개 뽑아서 더하기

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한

programmers.co.kr

 

재귀로 두 합을 구하여 중복을 제거해주었습니다.

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

void calSum(vector<int>& numbers, int idx, int sum, int cnt, vector<int>& temp) {
    if(cnt == 2) {
        temp.push_back(sum);
        return;   
    } else if(idx == numbers.size()) return;
    
    calSum(numbers, idx+1, sum, cnt, temp);
    calSum(numbers, idx+1, sum+numbers[idx], cnt+1, temp);
}

vector<int> solution(vector<int> numbers) {
    vector<int> answer, temp;
    calSum(numbers, 0, 0, 0, temp);
    sort(temp.begin(), temp.end());
    int prev = -1;
    for(int i=0; i<temp.size(); i++) {
        if(temp[i] != prev) {
            answer.push_back(temp[i]);
            prev = temp[i];
        }
    }
    return answer;
}
반응형

'Algorithm' 카테고리의 다른 글

프로그래머스 : 2 x n 타일링  (0) 2021.11.13
프로그래머스 : 타겟 넘버  (0) 2021.11.13
프로그래머스 : 순위  (0) 2021.11.13
프로그래머스 : 정수 삼각형  (0) 2021.11.13
프로그래머스 : 여행경로  (0) 2021.11.13

+ Recent posts