๋”ฐํŒŒ๐Ÿ•
Hwaiian Pizza IT Pub
๋”ฐํŒŒ๐Ÿ•
  • ALL (62)
    • Front-End (13)
      • HTML & CSS (2)
      • JavaScript (7)
      • React (2)
      • TypeScript (0)
      • Jquery (0)
      • Git (1)
      • Editor (0)
    • Algorithms (44)
      • Baekjoon (28)
      • Programmers (13)
      • Algorithms (3)
    • Computer Science (0)
      • Math (0)
    • Conference (1)
    • Life (3)
      • Book (0)
hELLO ยท Designed By ์ •์ƒ์šฐ.
๋”ฐํŒŒ๐Ÿ•

Hwaiian Pizza IT Pub

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ณธ] ํ•˜๋…ธ์ดํƒ‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜
Algorithms/Algorithms

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ณธ] ํ•˜๋…ธ์ดํƒ‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜

2022. 5. 18. 08:00
๋ฐ˜์‘ํ˜•

 

 

 

 

1. ํ•˜๋…ธ์ดํƒ‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์›๋ฆฌ


 

ํ•˜๋…ธ์ดํƒ‘์€ ์žฌ๊ท€๋ฅผ ์ด์šฉํ•œ ๋Œ€ํ‘œ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ๋‹ค.

 

์ถœ์ฒ˜ : ์นธ์•„์นด๋ฐ์ด

 

 

์ด 3๊ฐœ์˜ ๊ธฐ๋‘ฅ์ด ์กด์žฌํ•œ๋‹ค. ์ฃผ์–ด์ง„ n๊ฐœ์˜ ์›ํŒ์„ ๋‹ค๋ฅธ ๊ธฐ๋‘ฅ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

์ด๋•Œ ๋ช‡ ๊ฐ€์ง€ ๊ทœ์น™๋“ค์ด ์กด์žฌํ•œ๋‹ค.

 

  • ํ•œ ๋ฒˆ์— ๋”ฑ ํ•œ ๊ฐœ์˜ ์›ํŒ๋งŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์˜ฎ๊ฒจ์ง„ ์›ํŒ์€ ๋ฌด์กฐ๊ฑด ๋งจ ์œ„์— ์˜ฌ๋ผ๊ฐ„๋‹ค.
  • ๋งจ ์œ„์— ์žˆ๋Š” ์›ํŒ๋งŒ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  • ํฌ๊ธฐ๊ฐ€ ํฐ ์›ํŒ์€ ์ž‘์€ ์›ํŒ ์œ„๋กœ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์—†๋‹ค.

 

 

ํ•˜๋…ธ์ดํƒ‘์„ 3๋ฒˆ์งธ ๊ธฐ๋‘ฅ์œผ๋กœ ์˜ฎ๊ธฐ๋Š”๋ฐ ํ•„์š”ํ•œ ์ดํšŸ์ˆ˜๋Š” "2^n - 1" ๋ฒˆ์ด๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด 3๊ฐœ์˜ ์›ํŒ์„ ์˜ฎ๊ธด๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.

์ถœ์ฒ˜ : ์นธ์•„์นด๋ฐ๋ฏธ

A์— ์žˆ๋˜ 3๊ฐœ์งœ๋ฆฌ ๊ธฐ๋‘ฅ์„ C๋กœ B๋กœ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์ด๋‹ค.

์šฐ์„  3๋ฒˆ ์›ํŒ์„ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ„์— ์žˆ๋˜ 1๋ฒˆ๊ณผ 2๋ฒˆ ์›ํŒ์„ C๋กœ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค.

 

  • 1๋ฒˆ ์›ํŒ์„ A์—์„œ B๋กœ ์ด๋™
  • 2๋ฒˆ ์›ํŒ์„ A์—์„œ C๋กœ ์ด๋™
  • 1๋ฒˆ ์›ํŒ์„ B์—์„œ C๋กœ ์ด๋™

 

์œ„์™€ ๊ฐ™์ด 3๋ฒˆ์— ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ์œ„์— ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ์›ํŒ์„ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

3๋ฒˆ ์›ํŒ์„ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•ด 2๊ฐœ์งœ๋ฆฌ ๊ธฐ๋‘ฅ์„ ์˜ฎ๊ธฐ๋Š” ๋ฌธ์ œ๋ฅผ ํ‘ผ ๊ฒƒ์ด๋‹ค.

๋ฐ”๋กœ ์žฌ๊ท€์ ์œผ๋กœ ํ•ด๊ฒฐํ•œ ๊ฒƒ์ด๋‹ค.

 

3๊ฐœ์˜ ์›ํŒ์„ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•ด 2๊ฐœ ์›ํŒ๊นŒ์ง€ ์˜ฎ๊ธฐ๋Š” ํ•˜์œ„๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.

๋งŒ์•ฝ์— n๊ฐœ์˜ ์›ํŒ์ด ์ฃผ์–ด์ง„๋‹ค๋ฉด n-1๊ฐœ์˜ ์›ํŒ์„ ์˜ฎ๊ธฐ๋Š” ํ•˜์œ„๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๊ฒƒ์ด๋‹ค.

 

๋‹ค์‹œ 3๊ฐœ์˜ ์›ํŒ์„ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด์ž.

 

 

์ถœ์ฒ˜ : ์นธ์•„์นด๋ฐ๋ฏธ

 

์ด์ œ C์—์„œ B๋กœ 2๊ฐœ์˜ ์›ํŒ์„ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค.

 

  • 1๋ฒˆ ์›ํŒ์„ C์—์„œ A๋กœ ์ด๋™
  • 2๋ฒˆ ์›ํŒ์„ C์—์„œ B๋กœ ์ด๋™
  • A์— ์žˆ๋˜ 3๋ฒˆ ์›ํŒ์„ A์—์„œ B๋กœ ์ด๋™

 

2๊ฐœ์˜ ์›ํŒ์„ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด 3๋ฒˆ์˜ ์˜ฎ๊ธฐ๋Š” ํšŸ์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์žฌ๊ท€์ ์œผ๋กœ 3๊ฐœ์˜ ์›ํŒ์„ ์˜ฎ๊ธฐ๊ธฐ์œ„ํ•ด 2๊ฐœ์˜ ์›ํŒ์„ ์˜ฎ๊ธฐ๋Š” ๋ฐฉ์‹์„ ๋ถˆ๋Ÿฌ ํ•ด๊ฒฐํ•˜๊ณ 

3๋ฒˆ ์›ํŒ์„ 1๋ฒˆ ์˜ฎ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ์ด 7๋ฒˆ์˜ ์ด๋™ ํšŸ์ˆ˜๊ฐ€ ํ•„์š”ํ–ˆ๋‹ค.

 

2^3 - 1 = 7
2^n -1

 

 

 

 

2. ํ•˜๋…ธ์ดํƒ‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ˆ์‹œ ์ฝ”๋“œ(JS)


 

๋ฐฑ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ 11729๋ฒˆ

 

11729๋ฒˆ: ํ•˜๋…ธ์ด ํƒ‘ ์ด๋™ ์ˆœ์„œ

์„ธ ๊ฐœ์˜ ์žฅ๋Œ€๊ฐ€ ์žˆ๊ณ  ์ฒซ ๋ฒˆ์งธ ์žฅ๋Œ€์—๋Š” ๋ฐ˜๊ฒฝ์ด ์„œ๋กœ ๋‹ค๋ฅธ n๊ฐœ์˜ ์›ํŒ์ด ์Œ“์—ฌ ์žˆ๋‹ค. ๊ฐ ์›ํŒ์€ ๋ฐ˜๊ฒฝ์ด ํฐ ์ˆœ์„œ๋Œ€๋กœ ์Œ“์—ฌ์žˆ๋‹ค. ์ด์ œ ์ˆ˜๋„์Šน๋“ค์ด ๋‹ค์Œ ๊ทœ์น™์— ๋”ฐ๋ผ ์ฒซ ๋ฒˆ์งธ ์žฅ๋Œ€์—์„œ ์„ธ ๋ฒˆ์งธ ์žฅ๋Œ€๋กœ

www.acmicpc.net

์›ํŒ์„ ์˜ฎ๊ธด ํšŸ์ˆ˜,

์›ํŒ์˜ ์ด๋™ ๊ณผ์ •์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค.

 

 

node.js๋กœ ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋Š” ์ƒ๋žตํ–ˆ๋‹ค.

let answer = '';
let count = 0;
function hanoi(n, from, other, to) {
    if (n === 0) return;

	// n-1๊ฐœ์˜ ์›ํŒ์„ ๋‚จ์€์ถ•์ธ other๋กœ ์˜ฎ๊น€
    hanoi(n - 1, from, to, other);
    
    // ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” ์›ํŒ์„ ๋ชฉ์ ์ง€๋กœ ์ด๋™
    answer += `${from} ${to}\n`
    count ++;
    
    // other์ถ•์œผ๋กœ ์˜ฎ๊ฒผ๋˜ n-1๊ฐœ์˜ ์›ํŒ์„ to๋กœ ์˜ฎ๊น€
    hanoi(n - 1, other, from, to);
    return `${count}\n${answer}`;
}

console.log(hanoi(n, 1, 2, 3))

 

n = ์›๋ฐ˜์˜ ๊ฐœ์ˆ˜

from = ์›๋ฐ˜์ด ํ˜„์žฌ ์žˆ๋Š” ์ถ•

to = ์›๋ฐ˜์„ ์˜ฎ๊ธฐ๋ ค๊ณ  ํ•˜๋Š” ์ถ•

other = ๋‚จ์€ ์ถ•

 

 

์œ„์—์„œ ์„ค๋ช…ํ–ˆ๋˜ ๊ฑฐ์ฒ˜๋Ÿผ ์›ํŒ๋“ค์„ ์˜ฎ๊ธฐ๋ ค๋ฉด ์žฌ๊ท€์ ์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค.

์›ํŒ์˜ ๊ฐœ์ˆ˜๊ฐ€ 0์ด๋ฉด ์•„๋ฌด๊ฒƒ๋„ ์—†์ด return ์‹œํ‚ค๋Š” ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

์›ํŒ์„ ์˜ฎ๊ธธ ๋•Œ๋งˆ๋‹ค count๊ฐ€ 1์”ฉ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๊ณ 

์›ํŒ์ด from์—์„œ to๋กœ ์˜ฎ๊ฒจ์งˆ ๋•Œ์˜ ์ด๋™ ๊ณผ์ •์„ answer์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ count์™€ answer๋ฅผ return ํ•˜๊ณ  ์ถœ๋ ฅํ•˜๋ฉด ๋์ด๋‹ค.

 

 

 

๊ณ„์†ํ•ด์„œ ๋ถˆ๋Ÿฌ๋‚ธ๋‹ค๋Š” ๋ง์ด ์–ด์ฉŒ๋ฉด ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ

ํ•œ ๋ฒˆ ์ดํ•ดํ•˜๋ฉด ์—ฌ๊ธฐ์ €๊ธฐ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.

๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€

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

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ณธ] ์™„์ „ ํƒ์ƒ‰ (๋ธŒ๋ฃจํŠธ ํฌ์Šค Brute Force)  (0) 2022.05.25
[์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ณธ] ํƒ์š•(Greedy) ์•Œ๊ณ ๋ฆฌ์ฆ˜  (0) 2022.05.21
    'Algorithms/Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ณธ] ์™„์ „ ํƒ์ƒ‰ (๋ธŒ๋ฃจํŠธ ํฌ์Šค Brute Force)
    • [์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ณธ] ํƒ์š•(Greedy) ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ๋”ฐํŒŒ๐Ÿ•
    ๋”ฐํŒŒ๐Ÿ•
    ์ €์ชฝ ์†๋‹˜์ด ๋ณด๋‚ด์‹  ์—๋Ÿฌ์ž…๋‹ˆ๋‹ค. ๋””๋ฒ„๊น… ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?๐Ÿน

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