알고리즘 풀이

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

bimtaeur30 2026. 3. 9. 11:09

문제번호: 30088

문제명: 공포의 면담

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

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

 

오늘의 문제는 공포의 면담이라는 문제입니다.

이 문제는 그리디 알고리즘을 활용하여 모든 부서의 퇴근시간의 합을 구하는 문제입니다.

핵심 아이디어는 각 부서별 퇴근시간의 합이 가장 짧은 시간을 앞쪽 리스트에 배치시켜(정렬) 총 퇴근시간의 합을 최소화시키는 것 입니다.

다음은 정답코드입니다.

 

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 = new List<int>();

    for (int i = 0; i < N; i++)
    {
        int[] input = Array.ConvertAll(sr.ReadLine().Split(), int.Parse);
        int n = input[0];

        int[] arr = new int[n];

        for (int j = 0; j < n; j++)
            arr[j] = input[j + 1];

        Array.Sort(arr);

        int sum = 0;
        foreach (int t in arr)
            sum += t;

        list.Add(sum);
    }

    list.Sort();

    long answer = 0;
    long prefix = 0;

    foreach (int v in list)
    {
        prefix += v;
        answer += prefix;
    }

    sw.WriteLine(answer);
}

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

[C#] 백준 2178번 문제풀이  (0) 2026.03.12
[C#] 백준 11868번 문제풀이  (0) 2026.03.10
[C#] 백준 11660번 문제풀이  (0) 2026.03.07
[C#] 백준 1244번 문제풀이  (0) 2026.03.06
[C#] 백준 1916번 문제풀이  (0) 2026.03.05