알고리즘 문제/프로그래머스

최고의 집합 [Lv. 3] (C++)

우대비 2024. 8. 3. 11:54
반응형
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

N개의 수의 합이 S인 집합들모든 수의 곱이 가장 큰 집합을 찾아서 오름차순으로 출력하는 문제입니다.

 

풀이 방법

집합의 수들의 편차가 가장 적은게 답입니다.

N이 3이고 S가 9일 때는 ( 3, 3, 3 )

N이 5이고 S가 10일 때는 ( 2, 2, 2, 2, 2 )

N이 3이고 S가 11일 때는 (3, 4, 4)

 

즉 모든 경우의 수에 대해서 탐색할 필요 없이 (S / N) 을 answer 배열에 N번 넣어주고

(S % N)수 만큼 배열의 뒤에서부터 ++해주면 됩니다.

 

정답 코드

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int n, int s) {
    if (s < n)
        return {-1};
    
    vector<int> answer;
    
    int cnt = n;
    while(cnt--)
        answer.push_back(s / n);
    
    cnt = s % n;
    int idx = n-1;
    while(cnt--)
        answer[idx--]++;
    
    return answer;
}

 

 

 

반응형
LIST

'알고리즘 문제 > 프로그래머스' 카테고리의 다른 글

기지국 설치 [Lv. 3]  (1) 2024.09.07
숫자 게임[Lv. 3]  (0) 2024.08.03
이중우선순위큐 [Lv. 3]  (0) 2024.07.23
보석 쇼핑 [LV. 3] (C++)  (0) 2024.07.21
경주로 건설 [Lv. 3] (C++)  (0) 2024.07.19