개요
정수 배열에서 고유한(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() 메서드를 사용하는 더 간결한 방법도 있습니다.