2217번 - 로프

물리학 - "로프" (분류는 물리학이나 사실상 정렬 문제)

처음 풀이 코드

package AlgorithmStudy;

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

// 물리학 - 로프
public class Practice {
    static int N;
    static Integer[] rope;
    public static void main(String[] args) throws IOException {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        N=Integer.parseInt(br.readLine());
        rope=new Integer[N];

        for(int i=0; i<N; i++){
            rope[i]=Integer.parseInt(br.readLine());
        }
        Arrays.sort(rope, Collections.reverseOrder()); //내림차순으로 정렬 , 기본타입이라 래퍼클래스로 변환

        Integer max=rope[0];
        for(int i=1; i<N; i++){
            max=Math.max(rope[i]*(i+1),max); // Integet*int 가능한가? --> 자동으로 boxing/unboxing 됨
        }

        System.out.println(max);


    }
}

Refactoring

package AlgorithmStudy.정렬.P2217;

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

// 물리학 - 로프
public class Main {
   static int N;
   static int[] rope;
   public static void main(String[] args) throws IOException {
       BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
       N=Integer.parseInt(br.readLine());
       rope=new int[N];
       for (int i = 0; i < N; i++) {
           rope[i]=Integer.parseInt(br.readLine());
       }

       // rope 의 길이 정렬
       Arrays.sort(rope);
       // 최대 중량 구해주는 for 문
       int max=0;
       for(int i=0; i<N; i++){
           int temp=rope[i]*(N-i);
           if(temp>max){
               max=temp;
           }
       }
       System.out.println(max);

   }
}

좋은 웹페이지 즐겨찾기