문제 풀이/백준

[백준] 2217번. 로프 (JAVA)

27200 2024. 1. 16. 18:25

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


문제


풀이

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[] arr = new int[N];

        for(int i = 0; i<N; i++){
            arr[i] = sc.nextInt();
        }

        Arrays.sort(arr);

        int max = arr[0] * N;

        for(int i = 1; i<N; i++){
            if(arr[i]* (N-i) > max){
                max = arr[i]* (N-i);
            }
        }

        System.out.println(max);

    }
}

 문제에 접근하기 앞서서 조건을 먼저 제대로 이해해야한다. 각 줄은 병렬로 배치될 수 있으며 모든 줄을 사용할 필요가 없었다. 즉, 정렬을 먼저 진행하면 이 후 모든 줄을 사용할 필요가 없다는 조건을 더욱 편하게 사용할 수 있다고 생각했다. 따라서 배열을 먼저 정렬한 뒤에 계산을 진행하는 방식을 선택했다.