728x90
반응형
using System;
using System.Collections.Generic;
using System.Linq;
public class Solution
{
public int[] solution(string[] genres, int[] plays)
{
var albumDic = new Dictionary<string, Album>();
for (int i = 0; i < genres.Length; ++i)
{
if (!albumDic.ContainsKey(genres[i]))
albumDic.Add(genres[i], new Album());
albumDic[genres[i]].Add(i, plays[i]);
}
var albumList = albumDic.Values.ToList();
albumList.Sort(delegate (Album d1, Album d2)
{
if (d1.totalCount > d2.totalCount)
return -1;
else if (d1.totalCount < d2.totalCount)
return 1;
return 0;
});
List<int> answer = new List<int>();
int group = 2;
for (int i =0; i<albumList.Count; ++i)
{
albumList[i].Sort();
int dicCount = albumList[i].plays.Count;
if (dicCount > group)
dicCount = group;
for (int j = 0; j < dicCount; ++j)
answer.Add(albumList[i].plays[j].SerialIndex);
}
return answer.ToArray();
}
}
public class Plays
{
public int SerialIndex { get; private set; }
public int Count { get; private set; }
public Plays(int serialIndex, int count)
{
SerialIndex = serialIndex;
Count = count;
}
}
public class Album
{
public List<Plays> plays = new List<Plays>();
public int totalCount;
public void Add(int i, int count)
{
plays.Add(new Plays(i, count));
totalCount += count;
}
public void Sort()
{
plays.Sort(delegate (Plays d1, Plays d2)
{
if (d1.Count > d2.Count)
return -1;
else if (d1.Count < d2.Count)
return 1;
else if (d1.SerialIndex < d2.SerialIndex)
return -1;
else if (d1.SerialIndex > d2.SerialIndex)
return 1;
return 0;
});
}
}
늘 생각하는거지만 프로그래머스 문제 설명은 뭔가 어렵다.
(나만 그런게 아니라 다른 사람들도 많이 공감하는 내용..)
반응형
'프로그래밍 > 기타' 카테고리의 다른 글
프로그래머스 - 가장 큰 수 (c#) (0) | 2021.01.15 |
---|---|
프로그래머스 - K번째수 (C#) (2) | 2021.01.14 |
프로그래머스 - 위장 (C#) (0) | 2021.01.14 |
구글 스토어 앱 등록 (10) | 2020.10.03 |
프로그래머스 - 다리를 지나는 트럭 (C#) (0) | 2020.09.20 |