백준 2309번 일곱난쟁이
//
// 2309_SevenDwarfs.cpp
// 2309_SevenDwarfs
//
// Created by Eon on 3/22/19.
// Copyright © 2019 Eon. All rights reserved.
//
/*
https://www.acmicpc.net/problem/2309
백준 2309번 일곱난쟁이
브루트포스 유형의 문제
모든경우의수를 모두 구하는 문제
이중 for문 안에 for문이 하나더 존재하지만 이for문은 딱 한번만 실행되므로 O(N^2)
*/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void printVectorDatasWithoutTwoIndexes(vector<int>& a_vector, int a, int b) {
for (int i=0; i<a_vector.size(); i++) {
if(i == a || i == b)
continue;
else
cout << a_vector.at(i) << endl;
}
}
int main(void) {
const int n = 9; //난쟁이의 수.
int sum = 0;
vector<int> dwarfs; //난쟁이들의 키를저장하는 백터 생성.
//1.입력받기
int temp;
for (int i=0; i<n; i++) {
cin >> temp; //사용자로부터 난쟁이들의 키를 입력받음.
dwarfs.push_back(temp); //vector에 넣음.
sum += dwarfs[i]; //입력과 동시에 키의 TOTAL을 더하여 저장.
}
//2.정렬하기
sort(dwarfs.begin(), dwarfs.end()); //오름차순 sort (default가 오름차순이므로 세번째 파라미터인 비교함수 필요없음.)
//3.부루트포스(모든 경우의 수 계산)
for (int i=0; i<n; i++) {
for (int j=i+1; j<n; j++) {
if(sum - dwarfs[i] - dwarfs[j] == 100) { //i, j인덱스를 뺴고 100으로 딱떨어진다면(정답을 찾음)
printVectorDatasWithoutTwoIndexes(dwarfs, i, j); //두개 인덱스뺀 나머지 프린터하기
}
}
}
return 0;
}