문제출처
2217번: 로프
N(1≤N≤100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만
www.acmicpc.net
1. 여러개의 로프로 최대의 중량을 들어야 하고 로프들이 중량을 견딜 수 있어야한다
- >중량을 견딜 수 있는 무게가 가장 적은 로프*사용한 로프의 갯수가 로프들이 들 수 있는 최대의 중량이 된다.
첫번 째 실수 : 예외를 생각하지 않고 그대로 중량을 견딜 수 있는 무게가 가장 적은 로프*사용한 로프의 갯수를 출력했다. "모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다." 라는 문장을 간과했다.
예외 : 로프가 10,20,80으로 주어진다면 최대 들 수 있는 무게는 80이 되므로 위에서 설정한 가정이 맞지 않는다.
2. 배열을 올림차순으로 정렬한다.
3. 로프가 들 수 있는 최대 중량을 임의로 무게가 가장적은 로프*N으로 설정한다.
4. 배열을 1번 째 인덱스부터 순회하면서 임의로 설정했던 최대 중량값과 인덱스번 째 로프부터 N-1번째
로프까지 사용했을 때의 최댓 값을 비교한다.
5. 임의로 설정한 최대 중량과 비교해 더 큰 값을 최대중량으로 설정해준다.
6. 최종적으로 나온 최대중량을 출력한다.
N = int(input())
K = []
for i in range(N):
K.append(int(input()))
K.sort()
max = K[0] * N
for i in range(1,N):
if K[i] * (N -i) > max:
max = K[i] * (N -i)
print(max)
'알고리즘' 카테고리의 다른 글
[백준 알고리즘]1339 번 (Python) (0) | 2020.11.21 |
---|---|
[백준 알고리즘]11047 번 (Python) (0) | 2020.11.16 |
코드업[Code Up] 1999 : 성실한 개미 (파이썬) (0) | 2020.11.12 |
[백준 알고리즘]10950번/char타입 데이터 int타입으로 변환 (0) | 2020.10.28 |
[백준 알고리즘]15552번 빠른 A+B /BufferedReader와 BufferedWriter의 사용 (0) | 2020.10.28 |