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

C#으로 정수 배열의 고유한 요소 출력하기 – Dictionary 활용 방법

개요

정수 배열에서 고유한(distinct) 요소만 골라내어 출력하려면 Dictionary<int, int> 컬렉션을 활용하는 것이 효과적입니다. 딕셔너리는 키(Key)와 값(Value) 쌍으로 데이터를 저장하기 때문에, 배열의 각 요소를 키로 사용하고 해당 요소의 등장 횟수를 값으로 기록할 수 있습니다.

1. 배열과 딕셔너리 선언

먼저 정수 배열과 빈 딕셔너리를 준비합니다.

int[] arr = {
    88,
    23,
    56,
    96,
    43
};
var d = new Dictionary<int, int>();

딕셔너리 컬렉션을 사용하면 목록의 키와 값을 손쉽게 관리할 수 있어, 중복 여부 확인과 개수 집계를 동시에 처리할 수 있습니다.

2. 전체 예제 코드

foreach 문으로 배열을 순회하면서 ContainsKey() 메서드로 해당 요소가 이미 등록된 키인지 확인합니다. 키가 존재하면 카운트를 증가시키고, 없으면 발생 횟수 1로 새로 추가합니다.

using System;
using System.Collections.Generic;

namespace Demo {
   public class Program {
      public static void Main(string[] args) {
         int[] arr = {
            88,
            23,
            56,
            96,
            43
         };
         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} occurred {1} time", val.Key, val.Value);
      }
   }
}

실행 결과

88 occurred 1 time
23 occurred 1 time
56 occurred 1 time
96 occurred 1 time
43 occurred 1 time

핵심 정리

  • ContainsKey(res) : 딕셔너리에 해당 키가 이미 존재하는지 확인합니다.
  • d[res]++ : 키가 존재하면 발생 횟수를 1 증가시킵니다.
  • d[res] = 1 : 처음 등장한 요소는 발생 횟수 1로 새로 등록합니다.

이처럼 Dictionary를 이용하면 중복 제거와 함께 각 요소의 등장 횟수까지 한 번에 확인할 수 있습니다. 참고로 고유한 값만 간단히 추출하고 싶다면 LINQ의 Distinct() 메서드를 사용하는 더 간결한 방법도 있습니다.