백준 2217번: 로프

HARIBO·2021년 4월 28일
0

풀이

-선택한 로프의 가장 작은 값 = 최대 중량 / 선택한 로프의 수 이므로
-최대 중량 = 선택한 로프의 가장 작은 값 * 선택한 로프의 수
-로프 리스트를 오름차순으로 정렬 후, 로프 리스트에서 작은 값부터 하나씩 제외하면서 최대 중량을 구한다

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;



public class Problem2217 {
    static int ropeNum;
    static ArrayList<Integer> eachRope = new ArrayList<Integer>();
    static ArrayList<Integer> answer = new ArrayList<>();

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();

        ropeNum = Integer.parseInt(s);

        for(int i = 0; i < ropeNum; i++){
            String ropeStr = br.readLine();
            eachRope.add(Integer.parseInt(ropeStr));
        }

        Collections.sort(eachRope);

        //가장 작은 값을 하나씩 제거해 가면서 들 수 있는 최대 중량 찾는다
        for(int i = 0; i < ropeNum; i++){
            answer.add(eachRope.get(0) * eachRope.size());
            eachRope.remove(0);
        }

        //answer배열 내림차순 정렬, 첫번째 요소가 최댓값이다
        Collections.sort(answer, Collections.reverseOrder());

        System.out.println(answer.get(0));

    }
}

개선할 점

-answer 리스트를 설정할 필요 없이 이전 값과 현재 계산한 값을 대조하면서 설정하면 내림차순 정렬이 불필요하다.

0개의 댓글