데하! 안녕하세요 DevStone입니다!
그리디 문제 일곱 번째 로프 문제입니다.
저 또한 공부하면서 포스팅하는 거라 제 알고리즘이 최적이거나
정답은 아닙니다! 단순히 참고 용도로 부탁드립니다.
문제
풀이
처음에는 문제가 헷갈렸지만 핵심 문장은 "모든 로프를 사용해야 할 필요는 없으며"입니다.
예를 들어 버틸 수 있는 무개가 3인 로프 하나와 10인로프 하나가 있다면 3인로프 두 개를 사용하는 것보다
굳이 두 개의 로프를 사용하지 않고 두 번째 로프만 사용하는 것이 더 좋습니다.
따라서 로프의 길이를 내림차순으로 나열하고 N을 하나씩 증가시키며 곱하여 그중 가장 큰 값이
들 수 있는 최대 무개라는 걸 알 수 있습니다.
즉 (N번째 로프의 길이 * N) 이라는 식이 세워집니다.
문제 링크
https://www.acmicpc.net/problem/2217
2217번: 로프
N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하
www.acmicpc.net
예제 소스는 git에서 확인하실 수 있습니다.
https://github.com/Maker-Kim/Study/blob/master/Algorithm/Baekjoon_2217.py
GitHub - Maker-Kim/Study
Contribute to Maker-Kim/Study development by creating an account on GitHub.
github.com
'개발 > Algorithm' 카테고리의 다른 글
BAEKJOON Algorithm_5585번 (0) | 2021.07.30 |
---|---|
BAEKJOON Algorithm_1541번 (0) | 2021.07.29 |
BAEKJOON Algorithm_1931번 (0) | 2021.07.28 |
BAEKJOON Algorithm_11047번 (0) | 2021.07.28 |
BAEKJOON Algorithm_11399번 (0) | 2021.07.23 |