728x90
반응형
이번 문제의 핵심은 간단하다.
- 경화가 고르고 싶은 귤의 갯수가 k이고 tangerine[] 배열이 각각의 크기의 귤의 종류이다.
- 귤을 각각의 크기별로 갯수를 센다.
- 모든 귤을 Count 한 후에 많은 순서대로 내림차순 배치한다. (귤의 크기는 여기서 중요치 않다.)
- 많은 수의 귤 부터 귤을 다시 Count한다.
- 반복문을 돌리다가 귤의 갯수가 k보다 크거나 같아지면 종료한다.
- 몇 종류의 귤을 count 했는지 return한다.
public int solution(int k, int[] tangerine)
{
// 귤의 크기별로 개수를 세기 위해 Dictionary 사용
Dictionary<int, int> countDict = new Dictionary<int, int>();
for (int i = 0; i < tangerine.Length; i++)
{
// 이미 해당 크기가 Dictionary에 있으면 개수 증가
if (countDict.ContainsKey(tangerine[i]))
countDict[tangerine[i]]++;
else // 해당 크기가 없으면 새로 추가하고 개수를 1로 설정
countDict[tangerine[i]] = 1;
}
// 리스트 선언 및 Dictionary의 값 추가
List<int> counts = new List<int>();
var values = countDict.Values.ToList(); // Dictionary의 값을 리스트로 변환
for (int i = 0; i < values.Count; i++)
{
counts.Add(values[i]);
}
// 내림차순으로 정렬
counts.Sort();
counts.Reverse();
int selectedCount = 0; // 선택한 귤의 총 개수를 저장할 변수
int typesCount = 0; // 선택한 귤의 종류 수를 저장할 변수
// 가장 많은 개수부터 차례대로 선택
for (int i = 0; i < counts.Count; i++)
{
selectedCount += counts[i]; // 현재 종류의 귤 개수를 추가
typesCount++; // 종류 수 증가
if (selectedCount >= k) // 만약 선택한 귤의 총 개수가 k 이상이면 종료
break;
}
return typesCount; // 최종적으로 선택한 귤의 종류 수 반환
}
728x90
반응형
'코딩테스트' 카테고리의 다른 글
C# [프로그래머스] Lv.2 두 큐 합 같게 만들기 (0) | 2024.08.09 |
---|---|
C# [프로그래머스] Lv.2 택배 상자 (1) | 2024.08.06 |
C# [프로그래머스] Lv.2 카펫 (1) | 2024.07.31 |
C# [프로그래머스] 음양 더하기 (0) | 2024.05.09 |
C# [프로그래머스] Lv.1 없는 숫자 더하기 (0) | 2024.02.19 |