반응형
programmers.co.kr/learn/courses/30/lessons/68644
구현 방법
해당 문제는, 주어진 numbers배열에 있는 숫자들 중 두 개를 뽑아 더해서 구할 수 있는 모든 경우의 수를 구하는 문제입니다.
문제를 보자마자 생각난 로직은 다음과 같습니다.
예를 들어 5개의 숫자가 주어졌을 때,
1번째 원소와, 2번째, 3번째, 4번째, 5번째를 더한 숫자를 저장,
2번째 원소와, 3번째, 4번째, 5번째를 더한 숫자를 저장,
3번째 원소와, 4번째, 5번째를 더한 숫자를 저장,
4번째 원소와, 5번째를 더한 숫자를 저장시켜줍니다.
모든 가능한 경우의 수를 저장시켜 준 것이니, 이들 중 중복된 값을 제거하고 정렬해주면 끝납니다.
소스 코드
#include <bits/stdc++.h>
using namespace std;
vector<int> solution(vector<int> numbers) {
vector<int> answer;
//1과 2,3,4,5 더하고, 2와 3,4,5 더하고, 3과 4,5 더하한 모든 경우의수를
//answer 배열에 저장 시켜준다.
for(int i=0;i<(numbers.size()-1);i++) {
for(int j=i+1;j<numbers.size();j++) {
answer.push_back(numbers[i] + numbers[j]);
}
}
//answer 배열을 정렬하고, erase와 unique함수를 사용해 중복된 값을 제거해준다.
sort(answer.begin(),answer.end());
answer.erase(unique(answer.begin(),answer.end()),answer.end());
return answer;
}
반응형
'코딩테스트 > 프로그래머스(lv1)' 카테고리의 다른 글
[프로그래머스 Level 1] K 번째 수 (C++) (0) | 2021.01.24 |
---|---|
[프로그래머스 Level 1] 모의고사 (C++) (0) | 2021.01.24 |
[프로그래머스 Level 1] 완주하지 못한 선수 (C++) (0) | 2021.01.24 |
[프로그래머스 Level 1] 크레인 인형뽑기 게임 (C++) (0) | 2021.01.24 |
[프로그래머스 Level 1] 2016년 (C++) (0) | 2021.01.21 |
댓글