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 |