Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#으로 정수 목록에서 중복 값 찾아 출력하기

정수 목록에서 중복된 값을 찾아 출력하려면 Dictionary 컬렉션과 ContainsKey() 메서드를 활용하면 됩니다.

핵심 아이디어

Dictionary의 키(key)에 각 정수를 저장하고, 이미 존재하는 키라면 해당 값(value)을 1씩 증가시키는 방식입니다. 이렇게 하면 각 숫자가 몇 번 등장했는지 손쉽게 집계할 수 있으며, 값이 2 이상인 항목이 곧 중복된 숫자입니다.

예제 코드

먼저 중복이 포함된 정수 배열을 선언합니다.

int[] arr = {
    3,
    6,
    3,
    8,
    9,
    2,
    2
};

그다음 Dictionary 컬렉션을 사용해 각 정수의 등장 횟수를 계산하고, 결과를 출력합니다.

using System;
using System.Collections.Generic;

namespace Demo {
    public class Program {
        public static void Main(string[] args) {
            int[] arr = {
                3,
                6,
                3,
                8,
                9,
                2,
                2
            };
            var d = new Dictionary<int, int>();
            
            // 각 숫자의 등장 횟수 집계
            foreach (var res in arr) {
                if (d.ContainsKey(res))
                    d[res]++;
                else
                    d[res] = 1;
            }
            
            // 결과 출력
            foreach (var val in d)
                Console.WriteLine("{0}은(는) {1}번 나타났습니다", val.Key, val.Value);
        }
    }
}

실행 결과

3은(는) 2번 나타났습니다
6은(는) 1번 나타났습니다
8은(는) 1번 나타났습니다
9은(는) 1번 나타났습니다
2은(는) 2번 나타났습니다

코드 설명

  • ContainsKey(res): Dictionary에 해당 정수가 이미 키로 존재하는지 확인합니다.
  • d[res]++: 이미 존재한다면 등장 횟수를 1 증가시킵니다.
  • d[res] = 1: 처음 등장한 숫자라면 횟수를 1로 초기화합니다.
  • 마지막 반복문에서 모든 숫자와 등장 횟수를 화면에 출력합니다.

이 방법은 시간 복잡도 O(n)으로 동작하므로, 큰 배열에서도 효율적으로 중복을 찾을 수 있습니다. 만약 중복된 숫자(2회 이상 등장한 값)만 골라서 출력하고 싶다면, 마지막 반복문에서 val.Value > 1 조건을 추가하면 됩니다.