반응형
반응형

https://www.acmicpc.net/problem/15720

문제 요약

주어진 음식들의 전체 가격을 출력하고, 세트 메뉴는 10% 할인했을 때 가장 할인을 크게 받을 수 있는 가격 출력하기

 

 

 

풀이
var n = Console.ReadLine().Split().Select(int.Parse).ToList();
var a = new List<int>();
for (int i = 3; i-- > 0;) a = new List<int>(a.Concat(Console.ReadLine().Split().Select(int.Parse).OrderBy(x => x)));
float sum = 0;
Console.WriteLine(a.Sum());
for (int i = 1; i <= n.Min(); i++)
{
    int b = n[0] - i, c = n[0] + n[1] - i, d = n.Sum() - i;
    sum += (a[b] + a[c] + a[d]) * 0.9f;
    a[b] = 0; a[c] = 0; a[d] = 0;
}
sum += a.Sum();
Console.WriteLine(sum);

 

 

풀이 해설

1. 배열 n에 각 메뉴의 개수를 입력받는다.

3. 각 메뉴의 가격을 오름차순으로 정렬한 배열을 리스트 a에 이어 붙인다.(3번 반복)

(반복문이 끝나면 a는 {2000, 2500, 3000, 800, 1000, 1300, 500, 1000}이 된다.)

5. 전체 메뉴의 합 출력

9. 최소 가격을 담을 변수 sum에 a[3-i]+a[6-i]+a[8-i] * 0.9f 한 값 더하기(n의 최솟값만큼 반복)

(a[3-i], a[6-i], a[8-i]는 각각 3000,1300,1000이 된다.)

10. a[3-i],a[6-i],a[8-i]는 0으로 초기화

12. sum에 a의 모든 요소의 합 더하기(남은 수는 2000,800)

13. sum 출력


꿈속에서 살고 싶다

 

 

 

반응형

+ Recent posts