728x90
가장 중요한 것은 로프를 병렬로 사용할 경우 들 수 있는 무게는 가장 약한 로프에 제한이 걸리게 된다. 예시로 10, 15를 들어 올릴 수 있는 로프가 있어 병렬로 물체를 들어올린다면 들 수 있는 무게의 최대는 한 로프가 중량 10을 최대로 들 수 있고 병렬의 경우 같은 중량이 걸리므로 10 * 2가 된다. 즉, 임의로 몇 개의 로프를 고르는가에 대한 제한은 없지만, 고른 개수를 k라고 할 때 k개의 로프 중 가장 약한 로프 무게가 병렬로 연결된 로프에 걸릴 무게가 되고, 그 무게에 k를 곱한 값이 들어올릴 수 있는 최대 무게가 된다. k 번째로 약한 로프를 구하기 위해 정렬 알고리즘을 사용하였다.
전체 성공 코드
#include <stdio.h>
#include <stdlib.h>
int comp (const void *a, const void * b) {
return *(int *)b - *(int *)a;
}
int max_ (int a, int b) {
return a > b ? a : b;
}
int main() {
int N; int i;
scanf("%d", &N);
int *rope = (int *)malloc(N * sizeof(int));
for (i = 0; i < N; i++) {
scanf("%d", &rope[i]);
}
qsort(rope, N, sizeof(int), comp);
int max = 0;
for (i = 0; i < N; i++) {
max = max_(max, rope[i] * (i+1) );
}
printf("%d", max);
}
728x90
'공부 > 코딩 연습하기' 카테고리의 다른 글
[백준][C] 11726번 2×n 타일링 (동적 계획법) (0) | 2020.12.21 |
---|---|
[엘리스코딩][python] 도레미 파이썬 I 실력 확인 테스트 (47) | 2019.12.12 |
[백준][JAVA] 1110번 더하기 사이클 (0) | 2019.10.07 |
[백준][JAVA] 1463번 1로 만들기 (0) | 2019.10.06 |
[백준][JAVA] 10798번 세로읽기 (0) | 2019.10.01 |
댓글