반응형
https://www.acmicpc.net/problem/2217
2217번: 로프
N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하
www.acmicpc.net
로프 문제입니다.
그리드 알고리즘을 활용하는 문제였습니다.
예제 입력은 이와 같고 출력은 20이 되어야합니다.
k개의 로프를 사용하여 중량이 w를 들 때 w/k만큼의 중량이 걸리게 되고 20이상이 되면 첫 번째 루프는 끊어지기 때문입니다.
2
10
15
이러한 문제는 다른 예제를 써보면서 이해하는 것이 좋습니다.
4
15
17
30
50
내림차순 정렬이 되어있고
15 * 4 = 60
17 * 3 = 51
30 * 2 = 60
50 * 1 = 50
이 중 가장 큰 수를 출력해야 합니다.
정답 코드입니다.
BufferedReader를 활용하여 입력을 받았습니다.
또한 Arrays.sort()를 이용해 배열을 정렬했고, for문을 이용하여 loop[i] * (n - i) 계산을 answer[] 배열 안에 저장했습니다.
import java.io.*;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] loop = new int[n];
for(int i = 0; i < n; i ++) {
loop[i] = Integer.parseInt(br.readLine()); //로프 당 중량 입력 받기
}
Arrays.sort(loop); // 중량 내림차순 정렬
int[] answer = new int[n];
for(int i = 0; i < n; i++) {
answer[i] = loop[i] * (n-i);
}
Arrays.sort(answer);
System.out.println(answer[n-1]); // 최댓값 출력
}
}
정답입니다. 재밌었던 문제였습니다.
반응형
'🔑알고리즘 > baekjoon' 카테고리의 다른 글
백준 10974 : 모든 순열 파이썬 정답 풀이 (0) | 2022.08.03 |
---|---|
백준 2309 : 일곱 난쟁이 파이썬 정답 풀이 (combinations의 활용) (0) | 2022.08.03 |
백준 1026 : 보물 - 자바 문제 풀이 (0) | 2022.05.21 |
백준 10845 : 큐 - 자바(java) 문제 풀이 (0) | 2022.05.10 |
백준 4948 : 베르트랑 공준 - 자바 문제 해결 코드 (0) | 2022.01.25 |