TIL: HashSet에 대해 알아보자(C# 백준 3052)

김보근·2025년 1월 29일

백준

목록 보기
8/62

https://www.acmicpc.net/problem/3052

TIL: HashSet에 대해 알아보자

HashSet이란?

HashSet은 중복을 허용하지 않는 데이터 컬렉션이다.
순서가 중요하지 않고, 중복을 제거하면서 데이터를 저장할 때 사용하면 유용하다.

HashSet의 특징

중복 자동 제거

같은 값이 추가되면 자동으로 무시됨.

빠른 검색 및 추가 (O(1)에 가까운 성능)

List나 Array에서 Contains()로 중복 체크하면 O(n),

HashSet에서는 O(1)에 가까운 성능을 보장.

순서가 없음

List와 다르게 입력한 순서대로 저장되지 않음.

내부적으로 해시 테이블을 사용

Dictionary와 유사하지만 Key만 저장하는 구조.

HashSet 기본 사용법

선언 및 초기화

HashSet<int> set = new HashSet<int>(); // 빈 HashSet 생성
HashSet<int> set2 = new HashSet<int> { 1, 2, 3, 4, 5 }; // 초기값 포함

값 추가 (Add)

set.Add(10); // 추가됨
set.Add(20); // 추가됨
set.Add(10); // 중복 → 추가되지 않음

값 확인 (Contains)

if (set.Contains(10))
{
  Console.WriteLine("10이 존재합니다.");
}

값 삭제 (Remove)

set.Remove(10); // 10 제거

전체 데이터 출력

foreach (int num in set)
{
  Console.WriteLine(num);
}

문제 코드

namespace backjoon
{
  internal class Program
  {
      static void Main(string[] args)
      {
          HashSet<int> remainders = new HashSet<int>(); // 중복을 허용하지 않는 HashSet

          for (int i = 0; i < 10; i++)
          {
              int input = int.Parse(Console.ReadLine());
              int temp = input % 42;
              remainders.Add(temp); // HashSet에 추가 (중복 자동 제거)
          }

          Console.WriteLine(remainders.Count); // 서로 다른 나머지 개수 출력

      }
  }
}
profile
게임개발자꿈나무

0개의 댓글