반응형
문제 : https://www.acmicpc.net/problem/2217
풀이 :
이 문제는 시간제한이 있는것을 생각안하고, 쉬운문제다 생각하고 2중for문을 사용해서 처음에 풀었다...
안일했다..
결국 아래 코드로 로직 수정.
처음에는 문제가 이상해보였지만, 결국 결론은 간단하였다.
K의 하중을 N개의 로프가 각각 K/N 씩 받는다고한다.
==> 예를 들어보자.
최종 문제에서 제시하는 정보는 선택한 로프 10, 20 , 30, 40 , 50 이 있다고했을때
N개의 로프를 선택하여 하중을 분산시킨다.
그렇다면 하중을 잘견디는 N개를 선택하는게 당연히 유리하다.
만약 3개를 선택했을때라면 30,40,50을 선택할 것이고, 30*3이 최대로 허용할 수 있는 무게가된다.
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
Integer[] arr = new Integer[N];
for(int i=0; i<N; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr);
int result = 0;
for (int i = N-1; i >= 0; i--) {
//뽑은갯수중 숫자가 제일 작은것 * 갯수
int tmp = arr[i]*(N-i);
if(result<tmp) {
result = tmp;
}
}
System.out.println(result);
}
반응형
'Java > Algorithm' 카테고리의 다른 글
[Java-Algorithm] 백준 7576 토마토 풀이 (0) | 2021.06.15 |
---|---|
[Java-Algorithm] 백준 2606 바이러스 풀이 (0) | 2021.06.14 |
[Java-Algorithm] 백준 4949 균형잡힌 세상 풀이 (0) | 2021.06.10 |
[Java-Algorithm] 백준 1759 암호 만들기 (0) | 2021.06.10 |
[Java-Algorithm] 백준 10808 알파벳 개수 풀이 (0) | 2021.06.09 |