본문 바로가기
코딩테스트 준비/백준

[백준] 2217번 - 로프 [Java]

by mwzz6 2024. 12. 2.

https://www.acmicpc.net/problem/2217

 

[백준] 2217번 - 로프 [Java]


1.  아이디어

 

특정 로프가 버틸 수 있는 최대 중량에 대해 해당 로프보다 버틸 수 있는 최대 중량이 큰 로프는 해당 중량을 버틸 수 있으므로 로프를 버틸 수 있는 중량으로 정렬한 후 특정 로프가 버틸 수 있는 최대 중량과 해당 로프보다 버틸 수 있는 최대 중량이 큰 로프의 수를 곱해서 로프들로 버틸 수 있는 최대 중량을 구한다.


2. 문제풀이

 

정렬 이후 물체의 최대 중량을 갱신하며 찾아나가기만 하면 된다.


3. 코드

 

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));

        int N = Integer.parseInt(br.readLine());

        // 로프가 들어올릴 수 있는 최대 중량 기준으로 정렬
        int[] arr = new int[N];
        for (int i = 0; i < N; i++) {
            arr[i] = Integer.parseInt(br.readLine());
        }
        Arrays.sort(arr);

        int ans = 0;
        for (int i = 0; i < N; i++) {

            // 해당 로프보다 튼튼한 로프의 개수를 세서 최대 중량 계산
            ans = Math.max(ans, arr[i] * (N - i));
        }

        System.out.println(ans);
    }
}

4. 후기