ํ•˜๋…ธ์ด์˜ ํƒ‘ ์ดํ•ดํ•˜๊ธฐ

2022. 2. 18. 18:33ยท์•Œ๊ณ ๋ฆฌ์ฆ˜
 
 
๊ฒ‰์œผ๋กœ ๋ณด๊ธฐ์—๋Š” ํ•˜๋…ธ์ด์˜ ํƒ‘์—์„œ ์žฌ๊ท€์˜ ์กฐ๊ฑด์ธ ๋ถ€๋ถ„ ๋ถ„ํ• ์˜ ๊ฒฝ์šฐ๊ฐ€ ์—†์–ด๋ณด์ด์ง€๋งŒ, ์ž์„ธํžˆ ๋“ค์—ฌ๋‹ค ๋ณด๋ฉด ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
ํ•˜๋…ธ์ด์˜ ํƒ‘์€ ๊ธฐ๋‘ฅ 3๊ฐœ๋Š” ๊ณ ์ •์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์ž‘์ (From), ์˜ฎ๊ธธ ์ง€์ (To), ๋‚˜๋จธ์ง€ ์ง€์ (Mid)๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
 

 

 
์›๋ฐ˜ 3๊ฐœ ์˜ˆ๋ฅผ ๋“ค์–ด๋ด…์‹œ๋‹ค.(์›๋ฐ˜์„ 1์—์„œ 3์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •, N: 3, From: 1, Mid: 2, To: 3)

 

 
 
 
์ฒซ๋ฒˆ์งธ ๋นจ๊ฐ„ ์˜์—ญ์€ ์›๋ฐ˜ 2๊ฐœ๋ฅผ (1)์—์„œ (2)๋กœ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.(N: 2, From: 1, Mid: 3, To: 2)
์ด ํ›„, 1->3์€ ๊ฐ€์žฅ ํฐ ์›๋ฐ˜์„ ๋ชฉ์ (To)์ง€์ ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.
๋‘๋ฒˆ์งธ ๋นจ๊ฐ„ ์˜์—ญ์€ ์›๋ฐ˜ 2๊ฐœ๋ฅผ (2)์—์„œ (3)๋กœ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.(N: 2, From: 2, Mid: 1, To: 3)
 
 
์ •๋ฆฌํ•˜๋ฉด,
hanoi(3)์˜ ๊ฒฐ๊ณผ๋Š”
hanoi(2)๋ฅผ ๋‚˜๋จธ์ง€ ์ง€์ ์œผ๋กœ ๋จผ์ € ์˜ฎ๊ธฐ๊ณ ,
๊ฐ€์žฅ ํฐ ์›๋ฐ˜์„ ๋ชฉ์ ์ง€์ ์œผ๋กœ ์˜ฎ๊ธฐ๊ณ ,
hanoi(2)๋ฅผ ๋ชฉ์ ์ง€์ ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์ด ๋ฉ๋‹ˆ๋‹ค.
 
์ด๋ฅผ ์ผ๋ฐ˜ํ™” ํ•˜๋ฉด
 
hanoi(n)(1,2,3) = hanoi(n-1)(1,3,2) + move(1,3) + hanoi(n-1)(2,1,3)
์ด ๋˜๋ฉฐ
 
 
๋” ์ผ๋ฐ˜ํ™” ์‹œ์ผœ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
hanoi(n)(From,Mid,To) = hanoi(n-1)(From,To,Mid) + move(From,To) + hanoi(n-1)(Mid,From,To)
 
 
 
์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.   }
void hanoi(int n, int From, int Mid, int To) 
{
    if (n == 1)
        printf("1 : %d -> %d\n", From, To);
    else
    { 
        hanoi(n - 1, From, To, Mid);
        printf("%d : %d -> %d\n", n, From, To);
        hanoi(n - 1, Mid, From, To);
    }
}
}
 

 

 
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๊ธฐ๋ณธ] ๊ตฌ๊ฐ„ํ•ฉ ์‘์šฉ  (0) 2025.03.13
[๊ธฐ๋ณธ] ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ ํ™œ์šฉ  (0) 2025.03.10
[๊ธฐ๋ณธ] ํ•ฉ๋ฐฐ์—ด๊ณผ ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ  (0) 2025.03.08
[๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰] ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(Depth First Search, DFS)  (0) 2025.02.12
์ฃผ์š” ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์‹œ๊ฐ„๋ณต์žก๋„  (0) 2025.02.07
'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๊ธฐ๋ณธ] ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ ํ™œ์šฉ
  • [๊ธฐ๋ณธ] ํ•ฉ๋ฐฐ์—ด๊ณผ ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ
  • [๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰] ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(Depth First Search, DFS)
  • ์ฃผ์š” ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์‹œ๊ฐ„๋ณต์žก๋„
์„œ์•„๋ž‘๐Ÿ˜ƒ
์„œ์•„๋ž‘๐Ÿ˜ƒ
Just Do It๐Ÿ’ช
  • ์„œ์•„๋ž‘๐Ÿ˜ƒ
    G-Stack
    ์„œ์•„๋ž‘๐Ÿ˜ƒ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (144)
      • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (78)
        • C++ ๊ธฐ์ดˆ (28)
        • C++ ์‘์šฉ (18)
        • Python (18)
        • JavaScript & NodeJS (0)
        • Go (12)
        • React & NextJS (2)
        • Java (0)
      • AI (2)
      • ์ปดํ“จํ„ฐ ๊ตฌ์กฐ & ์šด์˜์ฒด์ œ (31)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (12)
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (5)
      • ๋„คํŠธ์›Œํฌ (3)
      • ๋””์ž์ธํŒจํ„ด (5)
      • ์„œ๋น„์Šค & ํˆด (7)
      • ํŠธ๋ Œ๋“œ&์ด์Šˆ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

    • G์Šคํƒ์˜ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ฉ”๋ชจ๋ฆฌ
    ํŒŒ์ด์ฌ
    pointer
    ํ•จ์ˆ˜
    ์กฐ๊ฑด๋ฌธ
    fork
    init
    ํ•˜๋“œ๋””์Šคํฌ
    ๋””์ž์ธํŒจํ„ด
    ํŒŒ์ผ์ž…์ถœ๋ ฅ
    ๋ณ€์ˆ˜
    ์ƒ์†
    c
    component
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    ๋ฐ˜๋ณต๋ฌธ
    STD
    ์ปดํ“จํ„ฐ
    ํฌ์ธํ„ฐ
    ์žฌ๊ท€
    ํŒจํ‚ค์ง€
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    cpu
    ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ
    ์Šคํƒ
    go
    c++
    Thread
    ๋ฐฐ์—ด
    RAM
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.6
์„œ์•„๋ž‘๐Ÿ˜ƒ
ํ•˜๋…ธ์ด์˜ ํƒ‘ ์ดํ•ดํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”