Post

[CS] List vs HashSet

๐Ÿ’ก List ์™€ HashSet์˜ ์ฐจ์ด์  ? ๋ญ๊ฐ€ ๋‹ค๋ฅด์ง€

์ด ๋‘๊ฐœ์˜ ์ปฌ๋ ‰์…˜์—๋Š” ๋‘˜๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” ์บ˜๋ž™์…˜์ธ๋ฐ, ์–ธ์ œ ์–ด๋–ป๊ฒŒ ์“ฐ์ด๋Š”์ง€ ์กฐ๊ธˆ์€ ๋‹ค๋ฅธ๋ฐ ํ•œ๋ฒˆ ์•Œ์•„๋ณด์ž!


๐Ÿ“‘ ๊ฐ„๋‹จ ๋น„๊ตํ‘œ

ํ•ญ๋ชฉList<T>HashSet<T>
๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฐฐ์—ด (Array ๊ธฐ๋ฐ˜)ํ•ด์‹œ ํ…Œ์ด๋ธ” (Hash Table ๊ธฐ๋ฐ˜)
์ค‘๋ณต ํ—ˆ์šฉโœ… ํ—ˆ์šฉํ•จโŒ ์ค‘๋ณต ํ—ˆ์šฉ ์•ˆ ํ•จ
์ •๋ ฌ ์œ ์ง€โœ… ์ธ๋ฑ์Šค ์ˆœ์„œ ์œ ์ง€โŒ ์ˆœ์„œ ๋ณด์žฅ ์•ˆ ํ•จ
ํƒ์ƒ‰ ์†๋„โŒ ๋А๋ฆผ (O(n))โœ… ๋น ๋ฆ„ (O(1) ํ‰๊ท )
์ฃผ์š” ๋ชฉ์ ์ˆœ์ฐจ์  ์ ‘๊ทผ, ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ์ค‘๋ณต ์ œ๊ฑฐ, ๋น ๋ฅธ ํฌํ•จ ์—ฌ๋ถ€ ์ฒดํฌ

๐Ÿ“‘ 1. List<T>๋Š” ์–ธ์ œ ์“ฐ๋‚˜?

List<T>๋Š” ๊ฐ€์žฅ ๋ฒ”์šฉ์ ์ธ ์ปฌ๋ ‰์…˜

  • ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•  ๋•Œ
  • ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•  ๋•Œ
  • ์ค‘๋ณต์ด ํ—ˆ์šฉ๋  ๋•Œ
  • 1
    2
    3
    4
    
    var list = new List<string>();
    list.Add("apple");
    list.Add("apple");
    Console.WriteLine(list.Count); // 2 (์ค‘๋ณต ํ—ˆ์šฉ)
    

    list.Contains("apple")์ฒ˜๋Ÿผ ์–ด๋–ค ๊ฐ’์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ด๊ฑด ๋‚ด๋ถ€์ ์œผ๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ˆœํšŒํ•˜๋ฉด์„œ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์—
    ์„ฑ๋Šฅ์ƒ ๋А๋ฆด ์ˆ˜ ์žˆ๋‹ค! ์ฆ‰, ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n)


๐Ÿ“‘ 2. HashSet<T>๋Š” ์–ธ์ œ ์“ฐ๋‚˜?

HashSet<T>๋Š” ์ค‘๋ณต์ œ๊ฑฐ ์™€ ๋น ๋ฅธ ํƒ์ƒ‰์— ํŠนํ™”๋จ

  • ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰์„ ํ•ด์•ผํ•  ๊ฒฝ์šฐ
  • ์ค‘๋ณต์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์„๋•Œ
1
2
3
4
5
6
var set = new HashSet<string>();
set.Add("apple");
set.Add("apple");
Console.WriteLine(set.Count); // 1 (์ค‘๋ณต ์ œ๊ฑฐ๋จ)

Console.WriteLine(set.Contains("apple")); // O(1) ์ˆ˜์ค€์˜ ๋น ๋ฅธ ํƒ์ƒ‰
  • ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table)์„ ์ด์šฉํ•ด์„œ ์ค‘๋ณต ์ฒดํฌ์™€ ํƒ์ƒ‰์„ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ

  • ๋‹จ์ ์€ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ. ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๋ฉด List๊ฐ€ ๋” ์ ํ•ฉ


๐Ÿš€ ์–ธ์ œ ์–ด๋–ค ๊ฑธ ์จ์•ผ ํ• ๊นŒ?

์ƒํ™ฉ์ถ”์ฒœ ์ปฌ๋ ‰์…˜
์ค‘๋ณต๋œ ๊ฐ’์„ ํ—ˆ์šฉํ•ด์•ผ ํ•  ๋•ŒList<T>
์ค‘๋ณต์„ ์ž๋™์œผ๋กœ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์„ ๋•ŒHashSet<T>
์š”์†Œ์˜ ์ˆœ์„œ(์ •๋ ฌ๋œ ์ˆœ์„œ)๊ฐ€ ์ค‘์š”ํ•  ๋•ŒList<T>
๊ฐ’์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•ด์•ผ ํ•  ๋•ŒHashSet<T>

๐Ÿ‘‰ ์ƒํ™ฉ์— ๋งž๋Š” ์ปฌ๋ ‰์…˜์„ ์„ ํƒํ•ด์„œ ์„ฑ๋Šฅ๊ณผ ํšจ์œจ์„ ๋ชจ๋‘ ์ฑ™๊ฒจ๋ณด์„ธ์š”!

This post is licensed under CC BY 4.0 by the author.

ยฉ Gubeommo. Some rights reserved.

Using the Chirpy theme for Jekyll.