반응형
https://www.acmicpc.net/problem/2217
위의 문제는 BaekJoon Online Judge의 알고리즘 분류 중
그리디 알고리즘의 카테고리에 포함되어 있는 문제이다.
주의점은 "모든 로프를 사용해야 할 필요는 없으며,
임의로 몇 개의 로프를 골라서 사용해도 된다."라는 점이다.
처음에 저 주의점을 안보고 풀다가 왜 틀렸는지 고민했다.
풀이는 먼저 로프를 int배열로 입력을 받은 다음 정렬을 시킨다.
그 다음 배열의 첫 번째 값과 로프의 개수를 곱해서 다시 배열에 저장하고,
두 번째는 로프의 개수 - 1을 해서 다시 배열에 저장한다.
이런 방식으로 로프의 개수를 한 개씩 줄여가면서 저장한 다음,
다시 배열을 정렬하고 배열의 맨 마지막인 최대값을 출력한다.
import java.util.Scanner;
import java.util.Arrays;
public class Question_2217 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
int[] rope = new int[number];
for(int i = 0; i < number; i++) {
rope[i] = sc.nextInt();
}
Arrays.sort(rope);
for(int i = 0; i < number; i++) {
rope[i] = rope[i] * (number-i);
}
Arrays.sort(rope);
System.out.println(rope[number-1]);
}
}
반응형
'BaekJoon > JAVA' 카테고리의 다른 글
[백준] 1012번 : 유기농 배추(JAVA) (0) | 2020.02.20 |
---|---|
[백준] 2178번 : 미로 탐색(JAVA) (0) | 2020.02.20 |
[백준] 11399번 : ATM(JAVA) (0) | 2020.02.12 |
[백준] 1931번 : 회의실배정(JAVA) (0) | 2020.02.12 |
[백준] 11047번 : 동전 0(JAVA) (0) | 2020.02.12 |
댓글