백준(JAVA) 풀이/그리디 알고리즘

백준(JAVA) 2217번 로프 풀이

개발윗미 2022. 9. 30. 12:17

Java로 구현한 2217번 로프 문제 풀이입니다.

 

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

 

2217번: 로프

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

www.acmicpc.net


import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] data = new int[n];
		
		for (int i=0; i<n; i++) {
			data[i] = sc.nextInt();	
		}
		
		Arrays.sort(data);
		
		int max_value = 0;
		for (int i=0; i<n; i++) {
			max_value = Math.max(max_value, data[i] * (n - i));
		}
		
		System.out.println(max_value);
	}
}

 

1. n개의 중량을 입력받아 data 배열에 할당하고, 오름차순으로 정렬한다.

 

2. 정렬된 중량값을 차례대로 확인하여, 만약 (현재의 중량 * 이후에 남은 중량 개수) 값이 max_value 보다 크다면 그 max_value를 갱신한다.