Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Class
- simulation
- database
- Counting
- string
- 자바
- sorting
- Math
- 파이썬
- two pointers
- 구현
- bit manipulation
- Binary Tree
- 코테
- Data Structure
- Number Theory
- 코딩테스트
- Matrix
- implement
- hash table
- Binary Search
- greedy
- dynamic programming
- java
- Stack
- Tree
- Method
- geometry
- array
- SQL
Archives
- Today
- Total
코린이의 소소한 공부노트
[백준 온라인 저지] 2217. 로프 본문
N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다.
하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다.
각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다.
1. 입력
- 첫째 줄에 정수 N이 주어진다. 다음 N개의 줄에는 각 로프가 버틸 수 있는 최대 중량이 주어진다. 이 값은 10,000을 넘지 않는 자연수이다.
2. 출력
- 첫째 줄에 답을 출력한다.
3. 예제
4. 코드
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.valueOf(br.readLine());
int[] w = new int[n];
for(int i=0 ; i<n ; i++)
w[i] = Integer.valueOf(br.readLine());
Arrays.sort(w);
int max = w[n-1];
for(int i=n-2 ; i>=0 ; i--){
int x = w[i] * (n-i);
if(x>max) max = x;
}
System.out.print(max);
}
}
- 27780KB, 348ms
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[백준 온라인 저지] 1541. 잃어버린 괄호 (0) | 2023.06.29 |
---|---|
[백준 온라인 저지] 1138. 한 줄로 서기 (0) | 2023.06.29 |
[백준 온라인 저지] 11399. ATM (0) | 2023.06.28 |
[백준 온라인 저지] 11047. 동전 0 (0) | 2023.06.28 |
[백준 온라인 저지] 5585. 거스름돈 (0) | 2023.06.28 |