[프로그래머스 C++] 최고의 집합
[프로그래머스 C++] 최고의 집합
https://school.programmers.co.kr/learn/courses/30/lessons/12938
해결전략
수학?
중복을 허용하는 집합에서 곱이 최대가 되어야 한다.
숫자의 크기 차이가 작을수록 곱은 최대가 된다.
그래서 s / n 으로 몫을 구하여 중간값을 기준으로 집합을 만든다.
s % n 으로 나머지를 구하고 나머지 값 만큼 숫자를 더한다.
정답코드
#include <vector>
using namespace std;
vector<int> solution(int n, int s) {
vector<int> answer;
int value = s / n; // s를 n으로 나눈 몫
int remainder = s % n; // s를 n으로 나눈 나머지
int x = n - remainder; // n에서 나머지를 뺀 값
if (value < 1) // value가 1보다 작으면 -1을 반환하고 종료
{
answer.push_back(-1);
return answer;
}
for (int i = 1; i <= n; i++)
{
if (i > x) { // i가 x보다 크면 value + 1을 추가
answer.push_back(value + 1);
}
else { // i가 x보다 작거나 같으면 value를 추가
answer.push_back(value);
}
}
return answer;
}
'⭐ 코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 C++] 숫자 게임 (0) | 2024.07.15 |
---|---|
[프로그래머스 C++] 베스트앨범 (0) | 2024.07.09 |
[프로그래머스 C++] 야근 지수 (1) | 2024.07.01 |
[프로그래머스 C++] 기지국 설치 (0) | 2024.06.18 |
[프로그래머스 C++] 단속카메라 (0) | 2024.06.17 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스 C++] 숫자 게임
[프로그래머스 C++] 숫자 게임
2024.07.15 -
[프로그래머스 C++] 베스트앨범
[프로그래머스 C++] 베스트앨범
2024.07.09 -
[프로그래머스 C++] 야근 지수
[프로그래머스 C++] 야근 지수
2024.07.01 -
[프로그래머스 C++] 기지국 설치
[프로그래머스 C++] 기지국 설치
2024.06.18