문제 링크
C++ 풀이
#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector <int> temp;
void getSum(int sum, int pos, int c, vector<int> &nums) {
if (c == 3) {
if (find(temp.begin(), temp.end(), sum) == temp.end()) //중복이 아닌 합만 저장
temp.push_back(sum);
return;
}
for (int i = pos; i < nums.size(); i++)
getSum(sum + nums[i], i + 1, c + 1, nums);
return;
}
int main() {
string answer = "";
int N;
cin >> N;
vector <int> nums(7);
for (int i = 1; i <= N; i++) {
for (int j = 0; j < 7; j++)
cin >> nums[j];
getSum(0, 0, 0, nums); //3개의 수의 전체 조합 구하기
sort(temp.begin(), temp.end());
answer += "#" + to_string(i) + " " + to_string(temp[temp.size() - 5]) + "\n";
temp.clear();
}
cout << answer;
}
통과는 했는데 더 효율적인 방법이 있을 것 같다. 고민해봐야겠다.
반응형
'알고리즘 · 코딩' 카테고리의 다른 글
[프로그래머스] 다음 큰 숫자 (0) | 2019.11.23 |
---|---|
[SWEA 3314] 보충학습과 평균 (0) | 2019.11.22 |
[프로그래머스] 멀쩡한 사각형 (0) | 2019.11.18 |
[프로그래머스] 프렌즈4블록 (0) | 2019.11.16 |
[프로그래머스] 캐시 (0) | 2019.11.14 |