C로 구현한 2217번 로프 문제 풀이입니다.
https://www.acmicpc.net/problem/2217
#include <stdio.h>
#include <stdlib.h>
int compare(const void* first, const void* second) {
if(*(int*)first < *(int*)second)
return -1;
else if(*(int*)first > *(int*)second)
return 1;
else
return 0;
}
int main() {
int n, w[100001], max=0;
scanf("%d", &n);
for(int i=0; i<n; i++) {
scanf("%d", &w[i]);
}
qsort(w, n, sizeof(int), compare);
for(int i=0; i<n; i++) {
if(max < w[i] * (n-i))
max = w[i] * (n-i);
}
printf("%d", max);
}
해당 문제는 오름차순 정렬을 통해 최대 중량을 구하면 된다.
입력한 로프의 수만큼 반복문을 돌려 배열 w의 각 인덱스 값에 입력을 받아 차례로 넣어준다.
입력이 모두 끝나면 qsort() 메소드를 통해 오름차순 정렬이 수행될 수 있도록 한다.
마지막 반복문에서는 로프의 수를 작은 것부터 하나씩 빼면서 최대 중량을 갱신해준다.
[참고] qsort( 정렬할배열, 요소개수, 요소크기, 비교함수 );
'백준(C언어) 풀이 > 그리디(Greedy) 알고리즘' 카테고리의 다른 글
백준(C) 14659번 한조서열정리하고옴ㅋㅋ 풀이 (0) | 2021.08.18 |
---|---|
백준(C) 2437번 저울 풀이 (0) | 2021.08.06 |
백준(C++) 2217번 로프 풀이 (0) | 2021.08.03 |
백준(C) 11399번 ATM 풀이 (0) | 2021.08.03 |
백준(C) 11047번 동전 0 풀이 (0) | 2021.08.03 |