C#에서 목록의 중복 제거 | CodeMaze

목록에서 중복된 내용을 제거하는 다양한 방법을 소개 합니다.


8개의 좋아요

코딩테스트에 재법 중복을 제거해야 하는 경우가 많아서
그럴때 마다 딕셔너리에 넣었다 빼는 방식을 사용했었는데
역시나 딕셔너리가 빠르긴 하네요! ㅎㅎ
좋은 글 잘 읽었습니다! :grinning:

2개의 좋아요

요약하면,

    public List<T> UsingEmptyListWithContains()
    {
        var listWithoutDuplicates = new List<T>();

        foreach (T item in ListWithDuplicates)
        {
            if (!listWithoutDuplicates.Contains(item))
            {
                listWithoutDuplicates.Add(item);
            }
        }

        return listWithoutDuplicates;
    }

이게 가장 빠르다는 말이군요.
반복문돌리면서 일일히 Contains를 호출하는게 가장 빠를 줄이야…

    public List<T> UsingDictionary()
    {
        var dic = new Dictionary<T, int>();
        foreach (var s in ListWithDuplicates)
        {
            dic.TryAdd(s, 1);
        }

        var distinctList = dic.Keys.ToList();

        return distinctList;
    }

이게 두번째로 빠르고…

물론 일반적으로 중복제거할 때 중복 아이템 중 디테일하게 어떤 조건을 필터링해서 삭제할지는 커스텀하게 구현해야겠지만 키값을 두고 조건없이 제거하는데에 있어서는 최고의 꿀팁인 것 같습니다!!

감사드립니다…!!!

3개의 좋아요