반응형
전체탐색으로도 풀수 있지만 수학적인 내용을 가미하면 더 쉽고 효율적인 코드가 된다.
이 문제는 전체탐색으로 풀었지만 수학적인 내용을 알게 된 문제이다.
즉 가장 작은값에 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 |