반응형

전체탐색으로도 풀수 있지만 수학적인 내용을 가미하면 더 쉽고 효율적인 코드가 된다. 

이 문제는 전체탐색으로 풀었지만 수학적인 내용을 알게 된 문제이다.

즉 가장 작은값에 1이 증가하면 곱의 증가율이(n+1)/n이기 때문에 큰 값이 나오게 된다. n이 작으면 작을수록 값이 커지기 때문이다. 전체탐색 소스는 너무 쉽고 제약사항이 없으면 불가능하기 때문에 수학적 내용이 담긴 소스를 기재한다.


#include <stdio.h>

#include <iostream>

#include <vector>

#include <algorithm>


using namespace std;


long long encrypt(vector<int> numbers)

{

long long ret=1;

sort(numbers.begin(), numbers.end());

numbers[0]++;


for(int i=0; i<numbers.size(); i++)

{

ret*=numbers[i];

}


return ret;

}

int main(void)

{

vector<int> numbers;

for(int i=1;i<4;i++)

numbers.push_back(i);


cout<<encrypt(numbers)<<endl;

}


반응형

'Algorithm' 카테고리의 다른 글

[BOJ 2583] 영역구하기  (0) 2018.12.28
[TopCoder 전체탐색] 회문(Palindrome)  (0) 2018.12.20
[TopCoder 시뮬레이션] 키위주스(KiwiJuiceEasy)  (0) 2018.12.19
[BOJ 2839] 설탕배달  (0) 2018.12.18
[BOJ 5543] 상근날드  (0) 2018.12.18

+ Recent posts