본문 바로가기

알고리즘 · 코딩

[SWEA 5948] 새샘이의 7-3-5 게임

문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWZ2IErKCwUDFAUQ&categoryId=AWZ2IErKCwUDFAUQ&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

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;
}

통과는 했는데 더 효율적인 방법이 있을 것 같다. 고민해봐야겠다.

 

 

 

반응형