ํ™ˆ [DSA] ํ•ด์‹ฑ
ํฌ์ŠคํŠธ
์ทจ์†Œ

[DSA] ํ•ด์‹ฑ


Title


๊ฐœ์š”

์šฐ์„ , ์ž๋ฃŒ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ณ  ๋“ค์–ด๊ฐ€๋ณด์ž.

์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์™€์˜ ์ƒํ˜ธ์ž‘์šฉ ๋ฐฉ๋ฒ•์„ ๊ทœ์ •ํ•˜๋Š” ๊ณ„์•ฝ๊ณผ ๊ฐ™๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…๊ณผ ํ•„์š”ํ•œ ์ž…๋ ฅ, ๊ธฐ๋Œ€๋˜๋Š” ์ถœ๋ ฅ ๋“ฑ์„ ํฌํ•จํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋™์  ๋ฐฐ์—ด์„ ์ƒ๊ฐํ•ด๋ณด์ž. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ถ”๊ฐ€, ์‚ฝ์ž…, ์‚ญ์ œ, ์—…๋ฐ์ดํŠธ ๋“ฑ์˜ ์ž‘์—…์„ ํฌํ•จํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…๋“ค์€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ ์‹œ ํŠน์ • ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด, .append()๋‚˜ .push() ๊ฐ™์€ ๋‚ด์žฅ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ถ”๊ฐ€ํ•  ์š”์†Œ๋ฅผ ์ธ์ž๋กœ ๋„˜๊ธด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ์ž‘์—…์€ ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†๋‹ค.

๊ตฌํ˜„์€ ์ž๋ฃŒ ๊ตฌ์กฐ๊ฐ€ ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ ๋ถ€๋ถ„์ด๋‹ค. ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐฉ์‹๊ณผ ์ž‘์—… ์ˆ˜ํ–‰ ๋ฐฉ๋ฒ•์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์ด ์—ฌ๊ธฐ์— ์†ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋™์  ๋ฐฐ์—ด์˜ ๊ตฌํ˜„์—๋Š” ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น, ํฌ๊ธฐ ๊ด€๋ฆฌ, ์‚ญ์ œ ์ž‘์—… ์‹œ ์š”์†Œ ์žฌ๋ฐฐ์—ด ๋“ฑ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค.

์ž๋ฃŒ ๊ตฌ์กฐ์˜ ๊ตฌํ˜„์€ ๋ณต์žกํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณต์žกํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋ฐ์ดํ„ฐ ์กฐ์ž‘์„ ํฌํ•จํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ์šฐ๋ฆฌ์—๊ฒŒ ํฌ๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค - ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ดํ•ดํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•„๋Š” ๊ฒƒ์ด๋‹ค.

์•ž์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์˜ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๋‹ค๋ฃฐ ๊ฒƒ์ด๋‹ค. ๊ธฐ๋ณธ์ ์ธ ์ดํ•ด๋ฅผ ํ•˜๋Š” ๊ฒƒ์€ ๊ฝค ๋„์›€์ด ๋˜์ง€๋งŒ, ๊ผญ ๋ชจ๋“  ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์™ธ์šธ ํ•„์š”๋Š” ์—†๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์™„์„ฑ๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ํฌํ•จ์‹œํ‚จ ๊ฒƒ์ด๋‹ค.

๋” ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ชจ๋“  ์ฃผ์š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—๋Š” ์ฃผ์š” ์ž๋ฃŒ ๊ตฌ์กฐ์˜ ๋‚ด์žฅ ๊ตฌํ˜„์ด ์žˆ๋‹ค. ๋ฉด์ ‘์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋‚ด์žฅ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•˜์ง€๋งŒ, ์ง์ ‘ ๊ตฌํ˜„ํ•  ํ•„์š”๋Š” ์—†๋‹ค.


์ด ์žฅ์—์„œ๋Š” ํ•ด์‹œ ๋งต๊ณผ ์„ธํŠธ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ด๋‹ค. ์ด๋“ค์€ ํ•ด์‹ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋œ๋‹ค.

ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ์„ ๋ฐ›์•„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง€์ •ํ•œ ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์ž…๋ ฅ์€ ํ‚ค๋กœ ๋ถˆ๋ฆฌ์šฐ๋ฉฐ, ๋™์ผํ•œ ์ž…๋ ฅ์€ ํ•ญ์ƒ ๋™์ผํ•œ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ์˜์–ด ์•ŒํŒŒ๋ฒณ ๋ฌธ์ž๋ฅผ ํฌํ•จํ•œ ๋ฌธ์ž์—ด์— ์ ์šฉ๋˜๋Š” ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

  1. ์ •์ˆ˜ total์„ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  2. ๋ฌธ์ž์—ด์˜ ๊ฐ ๋ฌธ์ž๋ฅผ ๊ฒ€ํ† ํ•˜๋ฉฐ, ๊ทธ ๋ฌธ์ž๊ฐ€ ์•ŒํŒŒ๋ฒณ์—์„œ ๋ช‡ ๋ฒˆ์งธ์— ์œ„์น˜ํ•˜๋Š”์ง€ ํŒŒ์•…ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, a๋Š” 1๋ฒˆ, c๋Š” 3๋ฒˆ, z๋Š” 26๋ฒˆ์งธ์— ํ•ด๋‹นํ•œ๋‹ค.
  3. ์ด ์ˆซ์ž๋ฅผ ๋ฌธ์ž์˜ ์œ„์น˜(index + 1)์™€ ๊ณฑํ•˜์—ฌ total์— ๋”ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "abc"์—์„œ b๋Š” ์•ŒํŒŒ๋ฒณ์—์„œ 2๋ฒˆ์งธ, ๋ฌธ์ž์—ด์—์„œ๋„ 2๋ฒˆ์งธ์— ์œ„์น˜ํ•˜๋ฏ€๋กœ total์— 2 * 2 = 4๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
  4. ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„, total์˜ ์ตœ์ข…๊ฐ’์„ ์–ป๋Š”๋‹ค.

์ด ๋ฐฉ์‹์€ ์‹ค์ œ ํ•ด์‹œ ํ•จ์ˆ˜์™€๋Š” ๋‹ค๋ฅด๋‹ค. ๋‹จ์ง€ ๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•œ ๋ฐฉ๋ฒ•์— ๋ถˆ๊ณผํ•˜๋‹ค. total์„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ •ํ•œ ๋ฒ”์œ„ ์•ˆ์— ๋งž์ถ”๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ์ด๋ฅผ ์œ„ํ•ด 4๋‹จ๊ณ„๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค:

  • ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„, total % x๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ %๋Š” ๋ชจ๋“ˆ๋กœ ์—ฐ์‚ฐ์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ด๋Š” ์ตœ์ข… ๋ณ€ํ™˜๋œ ๊ฐ’์ด [0, x - 1] ๋ฒ”์œ„ ์•ˆ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.


ํ•ด์‹œ ํ•จ์ˆ˜์˜ ์ค‘์š”์„ฑ

์šฐ๋ฆฌ๋Š” ๋ฐฐ์—ด์ด $O(1)$์˜ ๋ฌด์ž‘์œ„ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ์žˆ๋‹ค. ์ฃผ์–ด์ง„ ์ž„์˜์˜ ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด ๋ฐฐ์—ด์˜ ๊ฐ’์„ ์ƒ์ˆ˜ ์‹œ๊ฐ„ ๋‚ด์— ์ ‘๊ทผํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐฐ์—ด์˜ ์ฃผ๋œ ์ œ์•ฝ์€ ๊ทธ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๊ณ  ์ธ๋ฑ์Šค๊ฐ€ ์ •์ˆ˜ ํ˜•ํƒœ์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ์–ด๋– ํ•œ ์ž…๋ ฅ๋„ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ธ๋ฑ์Šค๊ฐ€ ์ •์ˆ˜์—ฌ์•ผ ํ•œ๋‹ค๋Š” ์ œ์•ฝ์„ ํšจ๊ณผ์ ์œผ๋กœ ์—†์•จ ์ˆ˜ ์žˆ๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ๋ฐฐ์—ด๊ณผ ๊ฒฐํ•ฉํ•˜๋ฉด ํ•ด์‹œ ๋งต ๋˜๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ”, ๋”•์…”๋„ˆ๋ฆฌ๋ผ๊ณ  ์•Œ๋ ค์ง„ ๊ตฌ์กฐ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

๋ฐฐ์—ด์—์„œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ๊ฐ’์— ๋งคํ•‘ํ•œ๋‹ค. ๋ฐ˜๋ฉด ํ•ด์‹œ ๋งต์—์„œ๋Š” ํ‚ค๋ฅผ ๊ฐ’์— ๋งคํ•‘ํ•˜๋ฉฐ, ํ‚ค๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ํ•ด์‹œ ๋งต์˜ ํ‚ค์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์ œ์•ฝ์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค(์ด๋Š” ์–ธ์–ด์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์ข‹์€ ์ง€์นจ์ด๋‹ค). ๊ฐ’์€ ์–ด๋– ํ•œ ๊ฒƒ์ด๋“  ๋  ์ˆ˜ ์žˆ๋‹ค.

ํ•ด์‹œ ๋งต์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฉด์ ‘์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋‹ค. ์ด๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ๋ฌธ์ œ์—์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ $O(n)$์œผ๋กœ ์ค„์ด๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋œ๋‹ค. ๋ชจ๋“  ์ฃผ์š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ํ•ด์‹œ ๋งต์„ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒŒ์ด์ฌ์—์„œ๋Š” ์ด๋ฅผ โ€œ๋”•์…”๋„ˆ๋ฆฌโ€๋ผ ๋ถ€๋ฅด๋ฉฐ, ์„ ์–ธ์€ dic = {}์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•˜๋‹ค. ์ด ๊ณผ์ •์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ํ•ด์‹œ ๋งต ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์™„์ „ํžˆ ์ดํ•ดํ•˜๊ณ  ์ˆ™๋‹ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์š”์•ฝํ•˜๋ฉด, ํ•ด์‹œ ๋งต์€ ์ˆœ์„œ๊ฐ€ ์—†๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ์„œ ํ‚ค์™€ ๊ฐ’์˜ ์Œ์„ ์ €์žฅํ•œ๋‹ค. ํ•ด์‹œ ๋งต์€ $O(1)$์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ‚ค์™€ ๊ด€๋ จ๋œ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ํ‚ค์˜ ์กด์žฌ ์—ฌ๋ถ€๋„ $O(1)$์— ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•ด์‹œ ๋งต์˜ ํ‚ค์™€ ๊ฐ’์— ๋Œ€ํ•ด์„œ๋Š” ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฐ˜๋ณต์ด ํŠน์ •ํ•œ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฅด์ง€๋Š” ์•Š๋Š”๋‹ค(์ด๋Š” ๊ตฌํ˜„ ๋ฐฉ๋ฒ•๊ณผ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค).

์ •๋ ฌ๋œ ์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ์‚ฝ์ž… ์ˆœ์„œ๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๋ฐ˜๋ฉด, ์ •๋ ฌ๋˜์ง€ ์•Š์€ ์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ์‚ฝ์ž… ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค.


๋ฐฐ์—ด๊ณผ์˜ ๋น„๊ต

์‹œ๊ฐ„ ๋ณต์žก๋„ ์ธก๋ฉด์—์„œ ํ•ด์‹œ ๋งต์€ ๋ฐฐ์—ด์„ ์••๋„ํ•œ๋‹ค. ํ•ด์‹œ ๋งต์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฐ์‚ฐ๋“ค์ด ๋ชจ๋‘ $O(1)$๋กœ ์ˆ˜ํ–‰๋œ๋‹ค:

  • ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฐ’๊ณผ ์—ฐ๊ฒฐ
  • ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ์‚ญ์ œ
  • ์š”์†Œ์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ

ํ•ด์‹œ ๋งต์€ ๋ฐฐ์—ด๊ณผ ๋™์ผํ•œ ์œ ์šฉํ•œ ์†์„ฑ๋“ค์„ ๊ฐ€์ง€๋ฉฐ, ๋™์ผํ•œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋ณด์ธ๋‹ค:

  • ์š”์†Œ์˜ ๊ธธ์ด/๊ฐœ์ˆ˜ ์ฐพ๊ธฐ
  • ๊ฐ’ ์—…๋ฐ์ดํŠธ
  • ์š”์†Œ ์ˆœํšŒ

ํ•ด์‹œ ๋งต์€ ์‚ฌ์šฉํ•˜๊ธฐ์—๋„ ๊ฐ„ํŽธํ•˜๋‹ค. ๋งŒ์•ฝ ํ‚ค๊ฐ€ ์ •์ˆ˜์ธ ๊ฒฝ์šฐ์—๋„, ๊ทธ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ๋ชจ๋ฅด๋ฉด ์–ผ๋งˆ๋‚˜ ํฐ ๋ฐฐ์—ด์ด ํ•„์š”ํ•œ์ง€ ๊ฒฐ์ •ํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ํ•ด์‹œ ๋งต์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค. ํ•ด์‹œ ๋งต์—์„œ๋Š” ํ‚ค๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ •ํ•œ ๋ฒ”์œ„ ๋‚ด์—์„œ ์ ์ ˆํ•œ ํฌ๊ธฐ์˜ ์ƒˆ๋กœ์šด ์ •์ˆ˜๋กœ ๋ณ€ํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐฐ์—ด์˜ ํฌ๊ธฐ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ ์‚ฌ์šฉ ์‹œ ํ•ด์‹œ ๋งต์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋‹จ์ ์ด ์žˆ์œผ๋ฉฐ, ๋ฉด์ ‘์—์„œ ์ด๋Ÿฌํ•œ ์žฅ๋‹จ์ ์— ๋Œ€ํ•ด ๋…ผํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

ํ•ด์‹œ ๋งต์˜ ๊ฐ€์žฅ ํฐ ๋‹จ์  ์ค‘ ํ•˜๋‚˜๋Š” ์ž‘์€ ์ž…๋ ฅ ํฌ๊ธฐ์— ๋Œ€ํ•ด ์˜ค๋ฒ„ํ—ค๋“œ ๋•Œ๋ฌธ์— ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. $O(1)$ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์ƒ์ˆ˜๋ฅผ ๋ฌด์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋•Œ๋•Œ๋กœ ํ˜„์‹ค๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค - ์‹ค์ œ๋กœ๋Š” $O(10)$๊ณผ ๊ฐ™์€ ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ๋‹ค. ๋ชจ๋“  ํ‚ค๋Š” ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ๊ฑฐ์ณ์•ผ ํ•˜๋ฉฐ, ์ถฉ๋Œ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ๋” ๋งŽ์€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋™์  ๋ฐฐ์—ด์€ ์‹ค์ œ๋กœ ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด๋กœ, ์šฉ๋Ÿ‰์„ ์ดˆ๊ณผํ•˜๋ฉด ์ž์ฒด์ ์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•œ๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”๋„ ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋œ๋‹ค. ๋ฌธ์ œ๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ ์กฐ์ •์ด ๋” ๋น„์‹ธ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋ชจ๋“  ๊ธฐ์กด ํ‚ค๋ฅผ ๋‹ค์‹œ ํ•ด์‹ฑํ•ด์•ผ ํ•˜๋ฉฐ, ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ์ €์žฅ๋œ ์š”์†Œ์˜ ์ˆ˜์— ๋น„ํ•ด ํ›จ์”ฌ ํฐ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, $10,000$๊ฐœ ์•„์ดํ…œ์˜ ํ•œ๋„๋ฅผ ์„ค์ •ํ–ˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” $10$๊ฐœ๋งŒ ์ €์žฅํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. $10,000$์ด ๋„ˆ๋ฌด ํฌ๋‹ค๊ณ  ์ฃผ์žฅํ•  ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ, ๋‹ค์Œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ $100,000$๊ฐœ ์š”์†Œ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์–ด๋–จ๊นŒ? ์š”์ ์€ ํ•„์š”ํ•œ ์š”์†Œ์˜ ์ˆ˜๋ฅผ ๋ชจ๋ฅผ ๋•Œ, ๋ฐฐ์—ด์ด ํฌ๊ธฐ ์กฐ์ •๊ณผ ๊ณต๊ฐ„ ๋‚ญ๋น„์— ์žˆ์–ด ๋” ์œ ์—ฐํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ฐธ๊ณ ๋กœ, ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ๋Š” ํ•ด๋‹น ํ•จ์ˆ˜์—์„œ ์ •์˜๋œ ๋ณ€์ˆ˜๋“ค๋งŒ ๊ณ ๋ คํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•ด์‹œ ๋งต ์—ฐ์‚ฐ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ $O(1)$์ด๋ผ๊ณ  ํ•  ๋•Œ, ์šฐ๋ฆฌ๊ฐ€ ์ฃผ๋กœ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์€ ํ•ด์‹œ ๋งต์˜ ํฌ๊ธฐ์ธ $n$์ด๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ํ‘œํ˜„์€ ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฌธ์ž์—ด์„ ํ•ด์‹œ ๋งต์— ๋„ฃ๋Š” ๋ฐ์—๋Š” $O(m)$ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—ฌ๊ธฐ์„œ $m$์€ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒ์ˆ˜ ์‹œ๊ฐ„ ์—ฐ์‚ฐ์ด๋ผ๋Š” ํ‘œํ˜„์€ ํ•ด์‹œ ๋งต์˜ ํฌ๊ธฐ์—๋งŒ ์ƒ๋Œ€์ ์œผ๋กœ ์ ์šฉ๋˜๋Š” ๊ฒƒ์ด๋‹ค.


์ถฉ๋Œ

์„œ๋กœ ๋‹ค๋ฅธ ํ‚ค๋“ค์ด ๊ฐ™์€ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ฒƒ์„ ์ถฉ๋Œ์ด๋ผ ํ•œ๋‹ค. ์ถฉ๋Œ์„ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ด์ „ ํ‚ค๋“ค์ด ๋ฎ์–ด์“ฐ์—ฌ์ ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋  ์œ„ํ—˜์ด ์žˆ๋‹ค. ์ถฉ๋Œ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋‚˜, ์—ฌ๊ธฐ์„œ๋Š” ์ฒด์ด๋‹์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•œ๋‹ค.

์•„์ง ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด๋”๋ผ๋„ ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ๋‹ค์Œ ์žฅ์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ค. ํ˜„์žฌ๋Š” ์ด๋ฅผ ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ ์ƒ๊ฐํ•˜๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค.

์ฒด์ด๋‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด์‹œ ๋งต์˜ ๋ฐฐ์—ด ๋‚ด์— ์ง์ ‘ ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋Œ€์‹  ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ €์žฅํ•œ๋‹ค. ์ด ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์˜ ๋…ธ๋“œ๋Š” ํ‚ค์™€ ๊ฐ’์„ ๋ชจ๋‘ ๋ณด๊ด€ํ•œ๋‹ค. ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด, ์ถฉ๋Œํ•œ ํ‚ค-๊ฐ’ ์Œ์ด ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์— ์—ฐ๊ฒฐ๋œ๋‹ค. ์ดํ›„ ์ด๋Ÿฌํ•œ ํ‚ค-๊ฐ’ ์Œ์— ์ ‘๊ทผํ•˜๋ ค ํ•  ๋•Œ๋Š” ํ•ด๋‹น ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ‚ค๊ฐ€ ์ผ์น˜ํ•  ๋•Œ๊นŒ์ง€ ํƒ์ƒ‰ํ•œ๋‹ค.

์ด ๋ถ€๋ถ„์ด ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์œผ๋‚˜, ๋ชจ๋“  ์ฃผ์š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ํ•ด์‹œ ๋งต ๊ตฌํ˜„์€ ์ถฉ๋Œ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. ํ•ด์‹œ ๋งต์˜ ๋‚ด๋ถ€ ์ž‘๋™ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ๋ฉด์ ‘์—์„œ ํŠน์ • ์งˆ๋ฌธ์„ ๋ฐ›๊ฑฐ๋‚˜ ํ•ด์‹œ ๋งต ์‚ฌ์šฉ์˜ ์žฅ๋‹จ์ ์„ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ค‘์š”ํ•˜์ง€๋งŒ, ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๋Š” ๋“œ๋ฌผ๋‹ค.

์ถฉ๋Œ์€ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๊ณ  ์ด ๊ณผ์ •์ด ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์–ด ํ•ด์‹œ ๋งต์˜ ์ „๋ฐ˜์ ์ธ ์†๋„์™€ ํšจ์œจ์„ฑ์„ ์ €ํ•˜์‹œํ‚ค๋Š” ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํ•ด์‹œ ๋งต์„ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•ด์•ผ ์ถฉ๋Œ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ๋ฐฐ์—ด ํฌ๊ธฐ์™€ ๋ชจ๋“ˆ๋Ÿฌ์Šค๊ฐ€ ์†Œ์ˆ˜์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ๊ทœ๋ชจ์˜ ์†Œ์ˆ˜๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

  • 10,007
  • 1,000,003
  • 1,000,000,007

์„ธํŠธ

์„ธํŠธ๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ”๊ณผ ๋งค์šฐ ๋น„์Šทํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ์ด๋‹ค. ์ด ๊ตฌ์กฐ๋Š” ํ‚ค๋ฅผ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ํ•ด์‹ฑ์ด๋ผ๋Š” ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. ์„ธํŠธ์™€ ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ์ฃผ๋œ ์ฐจ์ด๋Š” ์„ธํŠธ๊ฐ€ ํ‚ค๋ฅผ ๋‹ค๋ฅธ ๊ฐ’์— ๋งคํ•‘ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด๋‹ค. ์š”์†Œ์˜ ์กด์žฌ ์—ฌ๋ถ€๋งŒ์„ ํ™•์ธํ•˜๋Š” ๊ฒฝ์šฐ์— ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ํŽธ๋ฆฌํ•˜๋‹ค. ์„ธํŠธ์—์„œ๋Š” ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๊ณ , ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ $O(1)$์— ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์„ธํŠธ์— ๊ด€ํ•ด ์•Œ์•„๋‘์–ด์•ผ ํ•  ์ค‘์š”ํ•œ ์‚ฌํ•ญ์€ ๋นˆ๋„ ์ˆ˜๋ฅผ ์ถ”์ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ ์–ด๋–ค ์„ธํŠธ์— ๋™์ผํ•œ ์š”์†Œ๋ฅผ $100$๋ฒˆ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด, ์ฒซ ๋ฒˆ์งธ ์ถ”๊ฐ€์—์„œ ์š”์†Œ๊ฐ€ ์„ธํŠธ์— ๋“ค์–ด๊ฐ€๊ณ  ์ดํ›„์˜ $99$๋ฒˆ ์ถ”๊ฐ€์—์„œ๋Š” ์•„๋ฌด๋Ÿฐ ์ž‘์—…๋„ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.


๋ฐฐ์—ด์„ ํ•ด์‹œ ๋งต์˜ ํ‚ค๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

ํ•ด์‹œ ๋งต์—์„œ ํ‚ค๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณดํ†ต ๋ถˆ๋ณ€์„ฑ์ด ์š”๊ตฌ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐฐ์—ด์€ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์š”์†Œ๊ฐ€ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ํ•ด์‹œ ๋งต์˜ ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?

์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋”ฐ๋ผ ๋ฐฐ์—ด์„ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ณ ์œ ํ•œ ํ‚ค๋กœ ๋ฐ”๊พธ๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒŒ์ด์ฌ์—์„œ๋Š” ํŠœํ”Œ์ด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ๋ฐฐ์—ด์„ ํŠœํ”Œ๋กœ ๋ฐ”๊พธ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด tuple(arr) ๊ฐ™์€ ๋ช…๋ น์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ํŠน์ • ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ •์ˆ˜๋“ค ์‚ฌ์ด์— ์‰ผํ‘œ๋ฅผ ๋„ฃ์–ด [1, 51, 163]๋ฅผ "1,51,163"๊ณผ ๊ฐ™์ด ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. C++ ๊ฐ™์€ ์–ธ์–ด๋Š” ์ž์ฒด์ ์œผ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ํ‚ค๋ฅผ ์ง€์›ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.


์ธํ„ฐํŽ˜์ด์Šค ๊ฐ€์ด๋“œ

๋‹ค์Œ์€ C++๊ณผ Rust์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ•ด์‹œ ๋งต ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์„ค๋ช…์ด๋‹ค:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// ์„ ์–ธ: C++์€ ๋‹ค์–‘ํ•œ ๊ตฌํ˜„์„ ์ง€์›ํ•˜์ง€๋งŒ, ์—ฌ๊ธฐ์„œ๋Š” std::unordered_map์„ ์‚ฌ์šฉํ•œ๋‹ค.
// ํ‚ค์™€ ๊ฐ’์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ง€์ •ํ•œ๋‹ค.
unordered_map<int, int> hashMap;

// ์ดˆ๊ธฐ๊ฐ’์„ ํฌํ•จํ•˜์—ฌ ์ดˆ๊ธฐํ™”ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค:
unordered_map<int, int> hashMap = {{1, 2}, {5, 3}, {7, 2}};

// ํ‚ค์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค:
hashMap.find(1) != hashMap.end(); // ์ฐธ
hashMap.find(9) != hashMap.end(); // ๊ฑฐ์ง“

// ์ฃผ์–ด์ง„ ํ‚ค๋กœ ๊ฐ’์— ์ ‘๊ทผํ•˜๋ ค๋ฉด, ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋Œ€๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
hashMap[5]; // 3

// ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋„, ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋Œ€๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
// ํ‚ค๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๋ฉด ํ•ด๋‹น ๊ฐ’์ด ์—…๋ฐ์ดํŠธ๋œ๋‹ค.
hashMap[5] = 6;

// ํ‚ค๊ฐ€ ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ํ‚ค์™€ ๊ฐ’์˜ ์Œ์ด ์‚ฝ์ž…๋œ๋‹ค.
hashMap[9] = 15;

// ํ‚ค๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด .erase() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
hashMap.erase(9);

// ํ•ด์‹œ ๋งต์˜ ํฌ๊ธฐ๋ฅผ ์•Œ์•„๋‚ด๋ ค๋ฉด
hashMap.size(); // 3

// ํ‚ค์™€ ๊ฐ’์˜ ์Œ์„ ์ˆœํšŒํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
// .first๋Š” ํ‚ค๋ฅผ, .second๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
for (auto const& pair: hashMap) {
    cout << pair.first << " " << pair.second << endl;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”: Rust์—์„œ๋Š” ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•ด์•ผ ํ•œ๋‹ค.
// ์—ฌ๊ธฐ์„œ๋Š” i32 ํƒ€์ž…์˜ ํ‚ค์™€ ๊ฐ’์„ ๊ฐ–๋Š” HashMap์„ ์ƒ์„ฑํ•œ๋‹ค.
let mut hash_map: HashMap<i32, i32> = HashMap::new();

// ์ดˆ๊ธฐ๊ฐ’์„ ๊ฐ€์ง„ HashMap์„ ์ƒ์„ฑํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•:
let mut hash_map: HashMap<i32, i32> = [(1, 2), (5, 3), (7, 2)].iter().cloned().collect();

// ํ‚ค์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด contains_key ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค:
println!("{}", hash_map.contains_key(&1)); // true ์ถœ๋ ฅ
println!("{}", hash_map.contains_key(&9)); // false ์ถœ๋ ฅ

// ์ฃผ์–ด์ง„ ํ‚ค๋กœ ๊ฐ’์— ์ ‘๊ทผํ•˜๋ ค๋ฉด, get ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ unwrapํ•œ๋‹ค.
// ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ ๋Œ€๋น„ํ•ด unwrap_or ๋ฉ”์†Œ๋“œ๋กœ ๊ธฐ๋ณธ๊ฐ’์„ ์ œ๊ณตํ•œ๋‹ค.
println!("{}", hash_map.get(&5).unwrap_or(&-1)); // 3 ์ถœ๋ ฅ

// ํ‚ค์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด insert ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
hash_map.insert(5, 6);

// ํ‚ค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, ์ƒˆ ํ‚ค-๊ฐ’ ์Œ์ด ์‚ฝ์ž…๋œ๋‹ค.
hash_map.insert(9, 15);

// ํ‚ค๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด remove ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
hash_map.remove(&9);

// ํ•ด์‹œ ๋งต์˜ ํฌ๊ธฐ๋ฅผ ์•Œ์•„๋‚ด๋ ค๋ฉด len ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
println!("{}", hash_map.len()); // 3 ์ถœ๋ ฅ

// ํ‚ค์™€ ๊ฐ’์˜ ์Œ์„ ์ˆœํšŒํ•˜๋ฉฐ ์ถœ๋ ฅํ•˜๋ ค๋ฉด for ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
for (key, value) in &hash_map {
    println!("{} {}", key, value);
}

์ถœ์ฒ˜: Leetcode

์ด ํฌ์ŠคํŠธ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY-NC-ND 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
์ตœ๊ทผ ์—…๋ฐ์ดํŠธ
์ธ๊ธฐ ํƒœ๊ทธ
๋ฐ”๋กœ๊ฐ€๊ธฐ

[DSA] ๋ฐฐ์—ด๊ณผ ๋ฌธ์ž์—ด์˜ ์ถ”๊ฐ€์ ์ธ ํŒจํ„ด๋“ค

[DSA] ์š”์†Œ์˜ ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ

์ธ๊ธฐ ํƒœ๊ทธ