알고리즘 풀이

[C#] 백준 1026번 문제풀이

bimtaeur30 2026. 2. 20. 15:33

문제번호: 1026

문제명: 보물

문제링크: https://www.acmicpc.net/problem/1026

문제내용과 예제 입/출력은 위 문제 링크에서 확인해 주시기 바랍니다

안녕하세요. 오늘은 수학 태그의 보물이라는 문제를 풀어보았습니다. 해당 문제는 두 배열을 정렬하여 S = A[0] × B[0] + ... + A[N-1] × B[N-1] 일 때 S의 최솟값을 구하는 문제입니다.
따라서 저는 배열 1은 오름차순 정렬을 하고 배열 2번은 내림차순 정렬을 통해 최대한 큰수 x 작은수가 이루어지도록 했습니다.
다음은 정답코드입니다.

public static void Main()
{
    using StreamReader sr = new StreamReader(Console.OpenStandardInput());
    using StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());

    int n = int.Parse(sr.ReadLine());
    List<int> list_1 = Array.ConvertAll(sr.ReadLine().Split(), int.Parse).ToList();
    List<int> list_2 = Array.ConvertAll(sr.ReadLine().Split(), int.Parse).ToList();

    list_1.Sort();//정렬
    list_2.Sort();//졍렬
    list_2.Reverse();//정렬 후 뒤집기

    int answer = 0;

    for (int i = 0; i < n; i++)
    {
        answer += list_1[i] * list_2[i];
    }

    sw.WriteLine(answer);

    sr.Close();
    sw.Close();
}

 

'알고리즘 풀이' 카테고리의 다른 글

[C#] 백준 2217번 문제풀이  (0) 2026.02.22
[C#] 백준 1269번 문제풀이  (0) 2026.02.21
[C#] 백준 12865번 문제풀이  (0) 2026.02.19
[C#] 백준 10826번 문제풀이  (0) 2026.02.18
[C#] 백준 1932번 문제풀이  (0) 2026.02.17