본문 바로가기

코딩테스트/백준

[백준-자바] 2217번 로프 / 2022.03.07

 

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

 

2217번: 로프

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

www.acmicpc.net

 

 

import java.util.Arrays;
import java.util.Scanner;

public class Main{
    public static void main(String [] args){
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt(); // 로프의 개수
        int [] weight = new int [N]; // 각 로프가 버틸 수 있는 중량을 배열로

        for(int i=0; i<N; i++){ // 각 로프가 버틸 수 있는 중량 입력
            weight[i] = sc.nextInt();
        }

        Arrays.sort(weight); // 중량을 오름차순으로 정렬

        // 최대 중량 구하기
        int max = weight[0]*N; // 버틸 수 있는 중량이 가장 작은 경우 로프 N개 사용가능 
        // 그 다음 중량은 로프 N-1개 그 다음은 로프 N-2 개 
        for(int i=1; i<N; i++){
            if(max < weight[i]*(N-i)) // i를 하나씩 늘려가면서 최대 중량 비교
                max = weight[i]*(N-i);
        }
        System.out.println(max);
    }
}