-
백준 2217번 : 로프 (C언어)c c++ 언어 공부 2023. 3. 24. 10:50
https://www.acmicpc.net/problem/2217
2217번: 로프
N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하
www.acmicpc.net
Code:
123456789101112131415161718192021222324252627282930#include <stdio.h>#include <stdlib.h>int compare(const void* a, const void* b){if (*(int*)a > *(int*)b) return 1;else if (*(int*)a < *(int*)b)return -1;else return 0;}int main(){int n;scanf("%d", &n);int k[100001] = { 0, };int arr[100001] = { 0, };int temp = n;int j = 0;while (n--){scanf("%d", &k[n]);}qsort(k, temp, sizeof(int), compare);for (int i = 0; i < temp; i++){arr[i] = k[i] * (temp - i);}qsort(arr, temp, sizeof(int), compare);printf("%d", arr[temp-1]);}cs 문제풀이:
1. scanf로 값을 받는다.
2. qsort를 이용해서 오름차순으로 정렬.
3. ex) 10 16 40으로 정렬된다고 할 때 최대의 길이를 추측. -> 3가지 경우가 있다. 10을 기준 16을 기준 40을 기준
10이 기준일 때 모두다 10을 받을 수 있으므로 30, 16을 기준으로 할 땐 16과 40만 받을 수 있으므로 32, 40을 기준으로 40만 받을 수 있으므로 40.
4.새로운 배열에 받고 다시 정렬하고 max값을 찾는다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 13305번 : 주유소 (C언어) (0) 2023.03.25 백준 10610번 : 30 (C언어) (0) 2023.03.24 백준 5585번 : 거스름돈 (C언어) (0) 2023.03.23 백준 1613번 : 역사 (C언어) (2) 2023.03.23 백준 1904번 : 01타일 (C언어) (0) 2023.03.22