์ธ๋ฑ์Šค ์ด์ง„ ํŠธ๋ฆฌ

์ธ๋ฑ์Šค ์ด์ง„ ํŠธ๋ฆฌ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์œ ํ˜•์˜ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ƒˆ ์š”์†Œ ์‚ฝ์ž…
  • ์ผ๋ จ๋ฒˆํ˜ธ๋กœ ์š”์†Œ ์ œ๊ฑฐ
  • ์„œ์ˆ˜๋กœ ์š”์†Œ ๊ฐ€์ ธ์˜ค๊ธฐ
  • ๋ฐ์ดํ„ฐ๋Š” ์ •๋ ฌ๋œ ํ˜•์‹์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

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

struct node_s {    
    data_t data;

    uint64_t weight; // ะฒะตั ัƒะทะปะฐ

    node_t *left;
    node_t *right;

    node_t *parent;
};

๊ธฐ์‚ฌ์—๋Š” ์ฝ”๋“œ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ทธ๋ฆผ๊ณผ ์ด๋ก ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ์•„๋ž˜ ๋งํฌ์—์„œ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌด๊ฒŒ

์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋ฆฌ๋Š” ์•ฝ๊ฐ„ ์ˆ˜์ •๋˜์—ˆ์œผ๋ฉฐ ๋‹ค์Œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌด๊ฒŒ ๋งˆ๋””. ๋…ธ๋“œ ๊ฐ€์ค‘์น˜๋Š” ์ด ๋…ธ๋“œ์˜ ์ž์† ์ˆ˜ + 1 (๋‹จ์ผ ์š”์†Œ์˜ ๋ฌด๊ฒŒ).

๋…ธ๋“œ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ:

uint64_t bntree::get_child_weight(node_t *node) {
    if (node) {
        return node->weight;
    }

    return 0;
}

์‹œํŠธ์˜ ๋ฌด๊ฒŒ๋Š” ์ด์— ์ƒ์‘ํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 0.

๋‹ค์Œ์œผ๋กœ ๊ทธ๋Ÿฌํ•œ ํŠธ๋ฆฌ์˜ ์˜ˆ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ธ”๋ž™ ๋…ธ๋“œ ํ‚ค๋Š” ์ƒ‰์ƒ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค(ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฐ’์€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Œ). ๋นจ๊ฐ„ โ€” ๋งค๋“ญ ๋ฌด๊ฒŒ, ๋…น์ƒ‰ โ€” ๋…ธ๋“œ ์ธ๋ฑ์Šค.

ํŠธ๋ฆฌ๊ฐ€ ๋น„์–ด ์žˆ์œผ๋ฉด ๊ฐ€์ค‘์น˜๋Š” 0์ž…๋‹ˆ๋‹ค. ํŠธ๋ฆฌ์— ๋ฃจํŠธ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ์ด์ง„ ํŠธ๋ฆฌ

ํŠธ๋ฆฌ์˜ ๊ฐ€์ค‘์น˜๋Š” 1์ด ๋˜๊ณ , ๋ฃจํŠธ ์š”์†Œ์˜ ๊ฐ€์ค‘์น˜๋Š” 1์ด ๋ฉ๋‹ˆ๋‹ค. ๋ฃจํŠธ ์š”์†Œ์˜ ๊ฐ€์ค‘์น˜๋Š” ํŠธ๋ฆฌ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์š”์†Œ๋ฅผ ๋” ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ์ด์ง„ ํŠธ๋ฆฌ
์ธ๋ฑ์Šค ์ด์ง„ ํŠธ๋ฆฌ
์ธ๋ฑ์Šค ์ด์ง„ ํŠธ๋ฆฌ
์ธ๋ฑ์Šค ์ด์ง„ ํŠธ๋ฆฌ

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

์ง€์ˆ˜

์ด์ œ ๋…ธ๋“œ๋ฅผ ์ธ๋ฑ์‹ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ €์žฅํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋…ธ๋“œ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. ์ƒ‰์ธ์„ ์ €์žฅํ•œ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. O (N) ํŠธ๋ฆฌ์˜ ๊ฐ ๋ณ€๊ฒฝ ํ›„ ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.
์‹œ๊ฐ์  ํ‘œํ˜„์œผ๋กœ ๋„˜์–ด ๊ฐ‘์‹œ๋‹ค. ์šฐ๋ฆฌ์˜ ํŠธ๋ฆฌ๋Š” ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ์ด์ง„ ํŠธ๋ฆฌ

์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ์—๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 0, ์ด์ œ 2๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ์—์„œ๋Š” ๋ฃจํŠธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ  ๋‘ ๋ฒˆ์งธ์—์„œ๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ์ด์ง„ ํŠธ๋ฆฌ

๋ฃจํŠธ์—์„œ ์™ผ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ์˜ ๊ฐ€์ค‘์น˜๋Š” 1์ž…๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๊ฒฝ์šฐ:

์ธ๋ฑ์Šค ์ด์ง„ ํŠธ๋ฆฌ

์™ผ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ 0์œผ๋กœ ์œ ์ง€๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฃจํŠธ์˜ ์ธ๋ฑ์Šค๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

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

์ธ๋ฑ์Šค ์ด์ง„ ํŠธ๋ฆฌ

์˜ˆ๋ฅผ ๋“ค์–ด ํ‚ค๊ฐ€ 8์ธ ์š”์†Œ(๋ฃจํŠธ์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹)์˜ ์ธ๋ฑ์Šค๊ฐ€ ๊ณ„์‚ฐ๋˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ "๋ฃจํŠธ ์ธ๋ฑ์Šค" + "ํ‚ค 8์„ ๊ฐ–๋Š” ๋…ธ๋“œ์˜ ์™ผ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ์˜ ๊ฐ€์ค‘์น˜" + "1" == 3 + 2 + 1 ==์ž…๋‹ˆ๋‹ค. 6
ํ‚ค๊ฐ€ 6์ธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋Š” "๋ฃจํŠธ ์ธ๋ฑ์Šค" + 1 == 3 + 1 ==์ž…๋‹ˆ๋‹ค. 4

๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค๋ณ„๋กœ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์‚ญ์ œํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. O (๋กœ๊ทธ n), ์›ํ•˜๋Š” ์š”์†Œ๋ฅผ ์–ป์œผ๋ ค๋ฉด ๋จผ์ € ํ•ด๋‹น ์š”์†Œ๋ฅผ ์ฐพ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(๋ฃจํŠธ์—์„œ ์ด ์š”์†Œ๋กœ ์ด๋™).

๊นŠ์ด

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

๋ฌด๊ฒŒ๋ฅผ ๊นŠ์ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

/*
 * ะ’ะพะทะฒั€ะฐั‰ะฐะตั‚ ะฟะตั€ะฒะพะต ั‡ะธัะปะพ ะฒ ัั‚ะตะฟะตะฝะธ 2, ะบะพั‚ะพั€ะพะต ะฑะพะปัŒัˆะต ะธะปะธ ั€ะพะฒะฝะพ x
 */
uint64_t bntree::cpl2(uint64_t x) {
    x = x - 1;
    x = x | (x >> 1);
    x = x | (x >> 2);
    x = x | (x >> 4);
    x = x | (x >> 8);
    x = x | (x >> 16);
    x = x | (x >> 32);

    return x + 1;
}

/*
 * ะ”ะฒะพะธั‡ะฝั‹ะน ะปะพะณะฐั€ะธั„ะผ ะพั‚ ั‡ะธัะปะฐ
 */
long bntree::ilog2(long d) {
    int result;
    std::frexp(d, &result);
    return result - 1;
}

/*
 * ะ’ะตั ะบ ะณะปัƒะฑะธะฝะต
 */
uint64_t bntree::weight_to_depth(node_t *p) {
    if (p == NULL) {
        return 0;
    }

    if (p->weight == 1) {
        return 1;
    } else if (p->weight == 2) {
        return 2;
    }

    return this->ilog2(this->cpl2(p->weight));
}

๊ฒฐ๊ณผ

  • ์ƒˆ ์š”์†Œ ์‚ฝ์ž…์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. O (๋กœ๊ทธ n)
  • ์ผ๋ จ ๋ฒˆํ˜ธ๋กœ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ O (๋กœ๊ทธ n)
  • ์ผ๋ จ ๋ฒˆํ˜ธ๋กœ ์š”์†Œ๋ฅผ ์–ป๋Š” ๊ฒƒ์€ ๋‹ค์Œ์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. O (๋กœ๊ทธ n)

์†๋„ O (๋กœ๊ทธ n) ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋œ ํ˜•์‹์œผ๋กœ ์ €์žฅ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋Œ€ํ•œ ๋น„์šฉ์„ ์ง€๋ถˆํ•ฉ๋‹ˆ๋‹ค.

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

์ฐธ์กฐ

ํ”„๋กœ์ ํŠธ์—๋Š” ์ž‘๋™ ์†๋„๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋ฌด๊ฐ€ ์ฑ„์›Œ์ง€๊ณ  ์žˆ์–ด์š” 1000000 ๊ฐ•์š”. ๊ทธ๋ฆฌ๊ณ  ์š”์†Œ์˜ ์ˆœ์ฐจ์ ์ธ ์‚ญ์ œ, ์‚ฝ์ž…, ๊ฒ€์ƒ‰์ด ์žˆ์Šต๋‹ˆ๋‹ค. 1000000 ํ•œ ๋ฒˆ. ๊ทธ๊ฑด 3000000 ์šด์˜. ๊ฒฐ๊ณผ๋Š” ๊ฝค ์ข‹์€ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค ~ 8 ์ดˆ.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€