C# 알고리즘 코드카타

83. 귤 고르기

잼잼재미 2024. 3. 5. 09:41

 

using System;
using System.Collections.Generic;
using System.Linq;

public class Solution {
    public int solution(int k, int[] tangerine) {
        int answer = 0;
        int maxNum = 0;
        int K = k;
        int count = 0;
        Dictionary<int, int> dic = new Dictionary<int, int>();

        for (int i = 0; i < tangerine.Length; ++i)
        {
            if (!dic.ContainsKey(tangerine[i])) dic.Add(tangerine[i], 1);
            else  dic[tangerine[i]]++;
        }

        var list = dic.OrderByDescending(x => x.Value).ToList();

        while (true)
        {           
            maxNum = list[count].Value;

            if (K <= maxNum)
            {
                answer++;
                break;
            }
            else
            {
                K -= maxNum;
                answer++;
            }

            count++;
        }

        return answer;
    }
}

 

각각 크기 별로 가진 갯수를 Dictionary로 나타내고, Value 값을 내림차순으로 정렬해서 계산했다. 여기서 Value 값을 내림차순으로 정렬하는 방법이 어려워서 구글링을 했는데, 아직 잘 이해가 안된다.

 

 

다른 풀이


List<int> list = new List<int>(dic.Values);

 

Dictionary의 Value 값을 List로 나타내는 방법이다. 여기서 Sort나, Reverse로 오름차순, 내림차순으로 정렬할 수 있다.

'C# 알고리즘 코드카타' 카테고리의 다른 글

82. 멀리 뛰기  (0) 2024.02.29
81. N개의 최소공배수  (0) 2024.02.27
80. 예상 대진표  (0) 2024.02.23
79. 카펫  (0) 2024.02.21
78. 피보나치 수  (0) 2024.02.21