banner

BOJ 2217[백준 2217]

#algorithm#baekjoon#greedy

2019.06.17

로프

조건

  1. N개의 로프가 주어진다.
  2. 각각의 로프는 들 수 있는 중량이 다르다.
  3. 로프를 병렬로 연결하면, 드는 물체의 중량을 고르게 나눌 수 있다.
  4. 각각의 로프는 한 개씩 존재한다.
  5. 모든 로프를 반드시 다 사용해야하는 것은 아니다.

결과

  • 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량

해결 방법

  • 각각의 로프에 모두 동일한 중량이 가해진다는 것이 핵심이다.
  1. 들어올릴 수 있는 최대 중량을 내림차순으로 정렬한다.
  2. 첫 번째 로프의 최대 중량으로 생각하면, 최대 중량 = ( 첫 번째 로프가 들 수 있는 무게 ) * ( N )
  3. 두 번째 로프의 최대 중량으로 생각하면, 최대 중량 = ( 두 번째 로프가 들 수 있는 무게 ) * ( N - 1 )
  4. N번째 로프까지 반복하면서, 각각의 최대 중량을 비교하여 본다.

핵심 코드

Arrays.sort(rope);
for(int i = 0; i < N; i++) {
    w = Math.max(w, rope[i]*(N-i));
}
System.out.println(w);

전체 소스 코드는 여기서 확인하실 수 있습니다.

끝까지 읽어주셔서 감사합니다.

0분 동안 운영중...

Copyright © 2023, All right reserved.