반응형
반응형

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

문제 요약

A의 요소*B의 요소 = S일 때 S의 최솟값 출력하기

 

 

 

참고

문제에서 'B에 있는 수는 재배열하면 안 된다'고 했지만 재배열해도 문제 없고,

재배열하는게 코드도 간단하므로 저 문구는 신경 쓰지 말 것

 

 

 

풀이
var n = int.Parse(Console.ReadLine());
var a = Console.ReadLine().Split().Select(int.Parse).OrderBy(x => x).ToArray();
var b = Console.ReadLine().Split().Select(int.Parse).OrderByDescending(x => x).ToArray();
var s = 0;

for (int i = 0; i < n; i++)
{
    s += (a[i] * b[i]);
}
Console.WriteLine(s);

 

 

 

숏코딩

A.Zip(B, (x,y) => 조건) : 두 컬렉션의 요소를 페어링

더보기
var r=()=>Console.ReadLine().Split().Select(int.Parse);r();Console.Write(r().OrderBy(x=>x).Zip(r().OrderBy(x=>-x),(x,y)=>x*y).Sum());

 


이제 기본 코딩이랑 숏코딩 버전 나눠볼까

근데 오랜만에 기본 코드 쓰니까 좀 어색..

반응형

+ Recent posts