컴굥일지

[Programmers/프로그래머스 lv3][C++] 최고의 집합 본문

알고리즘/코테 문제

[Programmers/프로그래머스 lv3][C++] 최고의 집합

gyong 2023. 8. 26. 19:46
반응형

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12938

프로그래머스 최고의 집합

 

문제 내용

n개의 숫자를 더하여 s를 만든다.

이때 해당 n개의 숫자의 곱이 가장 큰 경우를 구하면 된다.

 

문제 풀이

중복이 허용되기 때문에 그렇게 어렵지는 않다.

모든 값이 중앙에 몰려있어야 곱했을 때 가장 크게 나오기 때문에, s를 n으로 나눈 값을 기본하면 된다.

나머지가 발생한 경우, 크기 만큼 +1을 해주면 된다.

 

코드

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> solution(int n, int s) {
    int num=s/n;
    if(num == 0) return {-1};
    
    vector<int> answer(n, num);
    
    for(int i=0;i<s%n;i++){
        answer[i]++;
    }
    sort(answer.begin(), answer.end());
    
    return answer;
}

 

반응형
Comments