Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 알고리즘
- 티스토리
- jdbc
- 가사 검색
- 튜플
- 프로그래머스
- 불량 사용자
- 트라이
- CleanCode
- 징검다리 건너기
- 보행자 천국
- Spring Boot
- 티스토리 open api
- Tistory
- Python
- bulk update
- 트라이 #trie #알고리즘
- pycon
- 크레인 인형뽑기 게임
- Open API
- trie
- 호텔 방 배정
- 카카오 인턴
Archives
- Today
- Total
택시짱의 개발 노트
[프로그래머스] 최고의 집합 본문
링크
https://programmers.co.kr/learn/courses/30/lessons/12938
풀이
집합의 원소의 개수 n과 모든 원소들의 합 s가 매개변수로 주어질 때, 최고의 집합을 구해야 되는 문제 이다.
예를 들어 원소의 개수가 2개 이고 원소들의 합이 6이라고 할 때 원소를 나누어 보았을 때
1,5 2,4 3,3 이렇게 3개로 나눌 수 있고 각각 원소의 곱은 5, 8 ,9이다.
이때 원소의 합을 원소의 개수로 나누었을 때 나오는 값에 가까운 수가 많을수록 원소들의 곱이 가장 크다는 것을 알 수 있다.
하지만 원소들의 합이 원소의 개수로 나누어 떨어지지 않을 때는 예를 들어 원소의 개수가 3개 이고 합이 11과 같은 경우에는 3,3,3으로 나누고 나머지가 2 이기 때문에 3, 4 ,4로 만들어 주면 최대의 곱을 만들 수 있습니다.
#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
#include<string>
#include<set>
#include<map>
#include<cstring>
#include<functional>
#include<cmath>
#include<stack>
#define SIZE 1010
const int INF = 2000000000;
using namespace std;
typedef long long int ll;
vector<int> solution(int n, int s) {
int mok = s / n;
int na = s %n;
vector<int> answer;
if (mok == 0) {
answer.push_back(-1);
return answer;
}
for (int i = n-1; i >=0; i--) {
//나머지가 있으면 원소에 1을 더해줌
if (i < na)
answer.push_back(mok + 1);
else
answer.push_back(mok);
}
return answer;
}
반응형
'알고리즘' 카테고리의 다른 글
[백준] 17822번 원판 돌리기 (0) | 2020.03.20 |
---|---|
[프로그래머스] 줄 서는 방법 (0) | 2020.03.19 |
[프로그래머스] 기둥과 보 설치 (0) | 2020.03.19 |
[프로그래머스] 블록 게임 (0) | 2020.03.17 |
[프로그래머스] 입국심사 (0) | 2020.03.16 |
Comments