[백준 #2217] 로프

Yujjin·2025년 1월 31일

백준

목록 보기
10/20
post-thumbnail

백준 #2217 로프

백준 #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 했다가 틀렸었다.


느낀 점 및 궁금한 점🍀

문제를 잘 읽자.

0개의 댓글