https://www.acmicpc.net/problem/2217
그리디 알고리즘으로 분류된 로프 문제 입니다.
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
32
33
34
35
36
37
38
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _2217
{
class Program
{
static void Main(string[] args)
{
long num = long.Parse(Console.ReadLine());
var ropeList = new List<long>();
long total = 0;
long maxWeight = 0;
for(long i = 0; i < num; i++)
{
long input = long.Parse(Console.ReadLine());
total += input;
}
{
{
}
}
Console.WriteLine(maxWeight);
}
}
}
|
자료의 갯수 num을 받고 num개의 로프를 입력받을 List를 만들었습니다.
long형의 사용은 로프의 갯수(최대 10만)와 견디는 무게(최대 10000)를 곱해서 풀어가는데 int범위를
넘어갈수 있기 때문입니다.
입력받은 무게 전부를 곱해 maxWeight에 넣어줍니다. 다음 List를 Sort하면 무게 순서대로 정렬되는데
i번 로프의 무게는 i번 뒤에 나오는 무게보다 전부 작습니다. 이를 이용해 0번의 로프 무게는 전체가 같이
견딜 수 있으며 1번의 로프 무게는 가장 가벼운 것을 제외하고 모두 함께 견딜 수 있습니다.
i번의 무게와 (로프의 갯수 - i)를 maxWeight에 업데이트 하며 최종 maxWeight에 남은 수를 출력했습니다.
백준#2875 - 대회 or 인턴 (0) | 2020.04.11 |
---|---|
백준#10610 - 30 (0) | 2020.04.10 |
백준#2884 - 알람시계 (0) | 2020.04.09 |
백준#14681 - 사분면 고르기 (0) | 2020.04.09 |
백준#2577 - 숫자의 개수 (0) | 2020.04.08 |