백준 #2217 로프
문제 설명👩🏫
k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다.
각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해라. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다.
입력
2
10
15
출력
20
내 코드💻
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int max = 0;
int n = Integer.parseInt(str);
int[] rope = new int[n];
for(int i=0;i<n;i++){
str = br.readLine();
rope[i] = Integer.parseInt(str);
}
Arrays.sort(rope);
for(int i=0;i<n;i++){
if(max < rope[i]*(n-i)){
max = rope[i]*(n-i);
}
}
System.out.println(max);
}
}
설명💡
각각의 로프를 입력받고, 정렬한다. 모두 사용할 필요가 없다고 했으니 사용하는 로프의 갯수에다가 그때의 최소값을 곱한 값 중 가장 큰 값을 return 한다.
실수한 부분😟
for(int i=0;i<n;i++){
if(max < rope[i]*(n-i)){
max = rope[i]*(n-i);
}
}
모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다. <- 처음에 이 부분을 놓쳐서 그냥 rope[0] * n 했다가 틀렸었다.
느낀 점 및 궁금한 점🍀
문제를 잘 읽자.