프로그래머스

프로그래머스(두 개 뽑아서 더하기)풀이 C++

Shin_jisoo 2020. 12. 11. 15:20
728x90

programmers.co.kr/

 

프로그래머스

온라인 시험 감독 서비스 모니토. 부정행위 걱정 없이 온라인 시험을 운영, 감독하세요. 응시자의 실물과 컴퓨터 화면을 동시에 감독하며 공정하고 투명한 온라인 시험을 운영할 수 있습니다.

programmers.co.kr

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

 

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

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

programmers.co.kr

1) 주석없는 VERSION

#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++){
            answer.push_back(numbers[i]+numbers[j]);
        }
    }
    
    sort(answer.begin(),answer.end());
    answer.erase(unique(answer.begin(),answer.end()),answer.end());
    return answer;
}

2) 주석있는 VERSION

#include <string>
#include <vector>
#include <algorithm> // sort, erase 함수 사용

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++){
            answer.push_back(numbers[i]+numbers[j]); // i 한번에 j 처음부터 끝까지 반복
        }
    }
    
    sort(answer.begin(),answer.end()); // 정렬 후
    answer.erase(unique(answer.begin(),answer.end()),answer.end()); // 중복 제거
    return answer;
}