[Algoritme] 2309-일곱난쟁이

gunggme·2023년 11월 15일

알고리즘

목록 보기
5/42

시작

일단 거의 1달 동안의 프로젝트가 끝나고 이제 부터 다시 시작하는 블로그인것 같다. 이제 한번 시작해보자. 우선 문제부터 보자. 우리가 흔히 아는 백설공주에 나오는 일곱난쟁이를 이용한 문제다. 한번 알고리즘을 한번 생각해보자.

알고리즘

  1. 9개의 입력을 받아서 저장함.
  2. 9개의 입력중 7개의 수를 뽑지만 그중 합이 100이 되는 수의 조합만 고름
  3. 그 고른 수를 오름차순으로 출력

그렇다면 이 알고리즘을 가지고 한번 생각을 해보자. 내가 쓰는 언어는 cpp그렇다면 수 배열의 조합을 구하는 함수인 next_permutation을 이용해 제작을 하면 된다. 밑에는 내가 제작한 스크립트다.

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>

using namespace std;

int main() {
	vector<int> nan(9), result;
	int sum = 0;
	//입력 받음
	for (int i = 0; i < nan.size(); i++) {
		cin >> nan[i];
	}
	sort(nan.begin(), nan.end());
	// 조합을 사용해 7개까지만 조합해 사용
	do {
		sum = 0;
		for (int i = 0; i < 7; i++) {
			result.push_back(nan[i]);
			sum += nan[i];
		}
        // 수의 합이 100이 되면 출력하고 멈추기
		if (sum == 100) {
			//cout << sum;
			for (int i = 0; i < result.size(); i++) {
				cout << result[i] << "\n";
			}
			break;
		}
        // 수의 합이 100이 안되서 result라는 벡터의 크기를 초기화
		result.resize(0);
	} while (next_permutation(nan.begin(), nan.end()));
}
profile
안녕하세요!

0개의 댓글