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