프로그래머스 Lv.1 코딩테스트

[프로그래머스 Lv.1] 두 개 뽑아서 더하기

하다블 2022. 3. 4. 18:25
반응형

문제는 다음과 같습니다.

코딩테스트 연습 - 두 개 뽑아서 더하기 | 프로그래머스 (programmers.co.kr)

 

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

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

programmers.co.kr

 

풀이 코드는 다음과 같습니다.

#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();i++)
    {
        for(int j{i+1};j<numbers.size();j++)
        {
            int n = numbers[i]+numbers[j];
            if(answer.empty())
            {
                answer.push_back(n);
            }
            else
            {
                bool check{true};
                for(int k{0};k<answer.size();k++)
                {
                    if(answer[k]==n)
                    {
                        check=false;
                        break;
                    }
                    
                }
                if(check)
                    {
                        answer.push_back(n);
                    }
            }
        }
    }
    sort(answer.begin(),answer.end());
    return answer;
}

서로 다른 숫자이어야 하고 쌍 (a,b)와 (b,a)는 동일하기 때문에 이러한 점을 피해 범위를 정하시면 됩니다.

이후 정답 벡터가 비어있으면 바로 넣고 있는 경우에는 정답 벡터 안에 동일한 값을 가지는 원소가 있는지 확인하여 없는 경우에만 넣고 맨 마지막에 sort로 정렬하면 됩니다.

 

반응형