본문 바로가기

프로그래밍/기타

프로그래머스 - 베스트앨범 (C#)

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;
        });
    }
}

    

늘 생각하는거지만 프로그래머스 문제 설명은 뭔가 어렵다.

(나만 그런게 아니라 다른 사람들도 많이 공감하는 내용..)

다람쥐와 포동포동이

 

 

 

RememberCook 9월 28일 정식 출시!

두번째 게임인 RememberCook이 출시되었습니다. 귀여운 캐릭터들이 나오는 간단한 게임이며 플레이어의 공간인지능력을 테스트하는 게임입니다. 아래 링크를 통해 다운 받으실 수 있으니 많은 관

chipmunk-plump-plump.tistory.com

반응형