์ž๋ฃŒ ๊ตฌ์กฐ

ํ…Œ์ด๋ธ”๊ณผ ํ•ด์‰ฌ ๊ฐœ๋…

youngdeok 2023. 2. 28. 19:21

ํ…Œ์ด๋ธ”์€ ์‚ฌ์ „๊ณผ ๊ฐ™์ด ๋‹จ์–ด๋ฅผ ํ†ตํ•ด ์˜๋ฏธ๋ฅผ ์ฐพ๋Š” ํ–‰์œ„์™€ ๋น„์Šทํ•˜๋‹ค. ๋‚ด๊ฐ€ ๊ฐ€์ง„ ๋‹จ์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•ด ์˜๋ฏธ๋ฅผ ์•Œ์ˆ˜ ์žˆ๋“ฏ, ํ…Œ์ด๋ธ” ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋‚ด๊ฐ€ ๊ฐ€์ง„ ํ‚ค๋ฅผ ํ™œ์šฉํ•ด ๊ฐ’์„ ๋„ฃ๊ณ  ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

“์ €์žฅ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ํ‚ค์™€ ๊ฐ’์ด ํ•˜๋‚˜์˜ ์Œ์„ ์ด๋ฃฌ๋‹ค”

์ด๋ ‡๋“ฏ ํ…Œ์ด๋ธ”์— ์ €์žฅ๋˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋“ค์€ ํ‚ค๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ํ‚ค๋Š” ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผํ•œ๋‹ค.

StuInfo stuInfoArr[1000];
    StuInfo student;
    int stuNum;

    printf("ํ•™๋ฒˆ๊ณผ ๋‚˜์ด ์ž…๋ ฅ: ");
    scanf("%d %d", &(student.stuEmp), &(student.age));
    stuInfoArr[student.stuEmp] = student;

์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” ๊ณ ์œ ํ•œ ํ•™์ƒ๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐ์—ด์— ๊ฐ’์„ ๋„ฃ์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ํ•™์ƒ์˜ ์ˆ˜๊ฐ€ 1000๋ช…์„ ๋„˜์—ˆ์„ ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•˜๊ธฐ ์œ„ํ•œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ hashํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด

int Hash(int stuNum)
{
    return stuNum % 100;
}

์œ„์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ํ•™๋ฒˆ์˜ ๋ 2์ž๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐ’์„ ์ €์žฅ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ์— , ์ƒ๋Œ€์ ์œผ๋กœ ์ ์€ ์ €์žฅ๊ณต๊ฐ„์„ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์œ„์˜ ๋ฐฉ์‹์—๋Š” ์ถฉ๋Œ์ด๋ผ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 1301 ๊ณผ 1401์ด๋ผ๋Š” ํ•™๋ฒˆ์„ ๊ฐ–๋Š” ํ•™์ƒ๋“ค์€ ๊ฐ™์€ ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค.

์ถฉ๋Œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ ํ˜• ์กฐ์‚ฌ๋ฒ•๊ณผ ์ด์ฐจ ์กฐ์‚ฌ๋ฒ•์ด ์žˆ๋‹ค.

  • ํ•ด์‰ฌํ•จ์ˆ˜ key % 7

ํ•ด์‰ฌํ•จ์ˆ˜๊ฐ€ key % 7 ์ด๋ผ๊ณ  ํ• ๋•Œ 2์™€ 9 ๊ฐ€ ๊ฐ™์€ ๊ณต๊ฐ„์— ์ €์žฅ๋œ๋‹ค. ์„ ํ˜• ์กฐ์‚ฌ๋ฒ•์€ ์ €์žฅํ•  ๊ณต๊ฐ„์— ์ด๋ฏธ ๊ฐ’์ด ์žˆ์„ ๋•Œ ๋ฐ”๋กœ ์˜† f(x) + 1์œ„์น˜์— ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค. f(x) + 1 ์œ„์น˜์—๋„ ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด + 1… ์”ฉ ์ €์žฅ ์œ„์น˜๋ฅผ ์ด๋™ ์‹œํ‚จ๋‹ค.

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

์ด์ฐจ ์กฐ์‚ฌ๋ฒ•์€ f(x) + 1 ^ 2 → f(x) + 2 ^ 2 ์œผ๋กœ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.

์ถฉ๋Œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ค‘ ํ•˜๋‚˜๋Š” ์ฒด์ด๋‹์ด๋‹ค.

์œ„์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด LinkedList๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ™์€ ํ•ด์‰ฌ ๊ฐ’์„ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์—ฎ๋Š”๋‹ค.

์œ„์˜ ๋ฐฉ์‹์„ “๋‹ซํžŒ ์–ด๋“œ๋ ˆ์Šค ๋ฐฉ์‹”์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ฒด์ด๋‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ ํ•ด์‰ฌ๊ฐ’์œผ๋กœ ๋ฌถ์—ฌ ์žˆ๋Š” ์Šฌ๋กฏ ๋“ค์„ ๋ชจ๋‘ ๊ฒ€์‚ฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์ง€๋งŒ, ์ข‹์„ ํ•ด์‰ฌ๊ฐ’์„ ์‚ฌ์šฉํ•ด์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ…Œ์ด๋ธ” ํ•ด์‰ฌ ์ฝ”๋“œ(c++): https://boiling-fowl-6d6.notion.site/c-140f3da88dd546f4bd32a9c7cbbe5a22

ํ…Œ์ด๋ธ” ํ•ด์‰ฌ ์ฝ”๋“œ(c): https://boiling-fowl-6d6.notion.site/c-6f5cf4e65c4a483086845db21ace545a