diff --git "a/\353\260\261\354\244\200/Silver/2217.\342\200\205\353\241\234\355\224\204/README.md" "b/\353\260\261\354\244\200/Silver/2217.\342\200\205\353\241\234\355\224\204/README.md" new file mode 100644 index 0000000..2e7ebd3 --- /dev/null +++ "b/\353\260\261\354\244\200/Silver/2217.\342\200\205\353\241\234\355\224\204/README.md" @@ -0,0 +1,32 @@ +# [Silver IV] 로프 - 2217 + +[문제 링크](https://www.acmicpc.net/problem/2217) + +### 성능 요약 + +메모리: 35364 KB, 시간: 108 ms + +### 분류 + +그리디 알고리즘, 수학, 정렬 + +### 제출 일자 + +2024년 5월 10일 14:14:44 + +### 문제 설명 + +

N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다.

+ +

하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다.

+ +

각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다.

+ +### 입력 + +

첫째 줄에 정수 N이 주어진다. 다음 N개의 줄에는 각 로프가 버틸 수 있는 최대 중량이 주어진다. 이 값은 10,000을 넘지 않는 자연수이다.

+ +### 출력 + +

첫째 줄에 답을 출력한다.

+ diff --git "a/\353\260\261\354\244\200/Silver/2217.\342\200\205\353\241\234\355\224\204/\353\241\234\355\224\204.py" "b/\353\260\261\354\244\200/Silver/2217.\342\200\205\353\241\234\355\224\204/\353\241\234\355\224\204.py" new file mode 100644 index 0000000..8e69b5d --- /dev/null +++ "b/\353\260\261\354\244\200/Silver/2217.\342\200\205\353\241\234\355\224\204/\353\241\234\355\224\204.py" @@ -0,0 +1,21 @@ +import sys + + +def main(): + n = int(sys.stdin.readline().strip()) + + lopes = [] + for _ in range(n): + lopes.append(int(sys.stdin.readline().strip())) + + lopes.sort() + + max_weight = 0 + for i in range(n): + max_weight = max(max_weight, (n - i) * lopes[i]) + + print(max_weight) + + +if __name__ == "__main__": + main()