문제
https://www.acmicpc.net/problem/11508
풀이
이 문제는 최소 비용을 구하는 문제이다.
한 번에 3개씩 살 수 있고 이 3개 중에 하나를 뺄 수 있을 때,
최소 비용을 구하기 위해서는 뺄 수 있는 값 중에 가장 큰 값을 빼는 것이 유리하다.
즉, 유제품들의 가격을 내림차순으로 정렬한 뒤 3개 씩 묶어서 가장 작은 값을 빼주면 된다.
ex : (7, 6,
5) (4, 3,2) 1
그러면 내림차순으로 정렬한 상태에서 3번째, 6번째, ... 와 같이 3의 배수인 순서의 값만 빼주면 된다.
코드
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
Integer[] goods = new Integer[N];
for(int i=0;i<N;i++) goods[i] = scan.nextInt();
Arrays.sort(goods, Comparator.reverseOrder());
int sum = 0;
for(int i=0;i<N;i++){
if(i%3==2) continue;
sum += goods[i];
}
System.out.println(sum);
}
}