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

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


8 Likes

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

2 Likes

요약하면,

    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 Likes