일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자료구조
- i자형 인재
- 그리디 알고리즘
- 마인크래프트
- 2025 대한민국 채용박람회
- windows 12
- unity engine
- 이진 탐색
- 라자냐
- 병역일터
- c#
- 큐
- 그래픽 디자인
- 빅오 표기법
- 택시 기하학
- Probuilder
- 배열 리스트
- 영어
- 브루트포스 알고리즘
- 코딩테스트
- 다이나믹프로그래밍
- URP
- 스택
- 카니발대학교 공대강국
- 닌텐도 스위치 2
- 시작
- VRoid Studio
- blender
- 잴다의 전설 티어스 오브 더 킹덤
- vrm posing desktop
Archives
- Today
- Total
WalkerJei's Lifelog
백준알고리즘 2217번 로프 C# 본문
세부 정보
- 사이트: 백준알고리즘
- 번호: 2217
- 문제명: 로프
- 언어: C#
- 분류: 수학, 그리디 알고리즘, 정렬
- 비고:
문제
N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다.
하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다.
각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다.
입력
첫째 줄에 정수 N이 주어진다. 다음 N개의 줄에는 각 로프가 버틸 수 있는 최대 중량이 주어진다. 이 값은 10,000을 넘지 않는 자연수이다.
출력
첫째 줄에 답을 출력한다.
풀이
로프 무게를 낮은 순으로 정렬하고, 무게에 (로프 개수 - 1)을 곱하면 최대 하중이 나온다.
이후 들 수 있는 무게가 낮은 로프를 빼면서 들 수 있는 최대 하중을 구하면 된다.
StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
// 로프의 개수 입력
int n = Convert.ToInt32(sr.ReadLine());
// 로프별로 들 수 있는 최대 무게
int[] rope = new int[n];
// 여러 개의 로프를 사용했을 때 들 수 있는 최대 무게
int maxWeight = 0;
// 로프별로 들 수 있는 최대 무게 입력
for (int i = 0; i < rope.Length; i++)
rope[i] = Convert.ToInt32(sr.ReadLine());
// 로프별로 들 수 있는 최대 무게가 낮은 순대로 정렬
Array.Sort(rope);
// 로프 최대 하중은 무게 * (로프 개수 - i)다
for (int i = 0; i < rope.Length; i++)
maxWeight = Math.Max(maxWeight, rope[i] * (n - i));
// 로프 최대 하중 출력
sw.WriteLine(maxWeight);
sr.Close();
sw.Close();
후기
피드백을 통해 푸는 방법을 알게 된 이상 이것도 외워두기로 하겠다. 풀기 전에는 아무래도 로프를 연결해 물체를 들어올리는 경우 최대 하중을 계산하려면 물리학 지식이 필요하다고 보았다. 이러한 유혀의 문제는 또 없는 걸까?
'소프트웨어 개발 > 코딩테스트(기성 문제)' 카테고리의 다른 글
백준알고리즘 1181번 단어 정렬 C# (0) | 2025.05.01 |
---|---|
백준알고리즘 14659번 한조서열정리하고옴ㅋㅋ C# (0) | 2025.04.30 |
백준알고리즘 11399번 ATM C# (0) | 2025.04.28 |
백준알고리즘 5585번 거스름돈 C# (0) | 2025.04.27 |
백준알고리즘 11047번 동전 0 C# (0) | 2025.04.26 |