C# - 배열중 중복된 값을 제거

int[] m_iTest = new int[5];
m_iTest[0] = 1;
m_iTest[1] = 2;
m_iTest[2] = 2;
m_iTest[3] = 4;
m_iTest[4] = 4;

위의 배열에서 중복을 제거하면 아래와 같이 됨
m_iTest[0] = 1;
m_iTest[1] = 2;
m_iTest[2] = 4;

public T[] GetDistinctValues<T>(T[] array)
{
 List<T> tmp = new List<T>();

 for (int i = 0; i < array.Length; i++)
 {
  if (tmp.Contains(array[i]))
   continue;
  tmp.Add(array[i]);
 }

 return tmp.ToArray();
}


// 사용법
m_iTest = GetDistinctValues<int>(m_iTest);

 

Download

사용자 삽입 이미지

2개의 댓글

  1. 안녕하세요. 도움이 많이 되었습니다. 감사합니다.
    그런데 한가지 궁금한점이 있습니다. 지금 위에 소스는 배열을 초기화하지 않고
    숫자 하나하나 씩 입력을 받구요. tmp.Add(array[i]); 아래에 count++ 해서
    for문을 돌리면 출력은 잘되는데요. 두번째부터 오류가 발생하네요 ㅠ
    예를들어 1 1 1 2 2 입력시 1 2 출력이 되구요. count값이랑 변수 초기화하고
    그다음 입력시 1 1 1-> 3개입력시 인덱스가 배열 범위를 벗어났습니다. 라고
    다운이 됩니다. 무엇이 문제인지 아직 찾지를 못하고 있어요ㅠ

    • 본문에 나오는 코드를 테스트한 파일을 첨부로 올려두었습니다. 제 코드상에는 별 문제는 없는것 같구요.. count를 어떤 이유로 넣어두셨는지는 모르겠지만 그것때문에 배열의 index를 벗어난듯합니다.. 나그네님이 작성하신 코드를 보지 못해 정확한 이유는 잘 모르겠네요.

댓글 남기기