1463 1๋กœ๋งŒ๋“ค๊ธฐ ๐Ÿ‘Š

๋ฌธ์ œ

์ •์ˆ˜ X์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ธ ๊ฐ€์ง€ ์ด๋‹ค.

1. X๊ฐ€ 3์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด, 3์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.
2. X๊ฐ€ 2๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด, 2๋กœ ๋‚˜๋ˆˆ๋‹ค.
3. 1์„ ๋บ€๋‹ค.

์ •์ˆ˜ N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์œ„์™€ ๊ฐ™์€ ์—ฐ์‚ฐ ์„ธ ๊ฐœ๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•ด์„œ 1์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 10^6๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์—ฐ์‚ฐ์„ ํ•˜๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ1

2

์˜ˆ์ œ ์ถœ๋ ฅ1

1

์˜ˆ์ œ ์ž…๋ ฅ2

10

์˜ˆ์ œ ์ถœ๋ ฅ2

3

์ฝ”๋“œ

โœ” ์ด์ „์— ๊ตฌํ–ˆ๋˜ ๊ฐ’๋“ค์„ ๋ฐฐ์—ด์— ๊ณ„์† ์ €์žฅํ•จ์œผ๋กœ์จ ๊ตฌํ–ˆ๋˜ ๊ฐ’๋“ค์— +1์„ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ•œ๋‹ค.

const readline = require("readline");
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

rl.on("line", function (line) {
  const num = Number(line); // ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ž…๋ ฅ ๋ฐ›์€ ๊ฐ’ ์ˆซ์ž๋กœ ํ˜•๋ณ€ํ™˜
  const arr = new Array(num + 1).fill(0); // ์ž…๋ ฅ๋ฐ›์€ ํฌ๊ธฐ๋งŒํผ ๋ฐฐ์—ด ๊ณต๊ฐ„ ๋งŒ๋“ค๊ณ  0์œผ๋กœ ์ดˆ๊ธฐํ™”

  for (let i = 2; i <= num; i++) {
    arr[i] = arr[i - 1] + 1; // arr[2]์— 1๋Œ€์ž…

    if (i % 2 === 0) {
      // i๊ฐ€ 2๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด
      arr[i] = Math.min(arr[i], arr[i / 2] + 1); // ์œ„์—์„œ ๋Œ€์ž…ํ•œ  1(arr[i])๊ณผ 0(arr[2/2]+1)์„ ๋น„๊ตํ•ด์„œ ์ž‘์€ ๊ฐ’์„ arr[2]์— ๋Œ€์ž…
    }

    if (i % 3 === 0) {
      // i๊ฐ€ 3์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด
      arr[i] = Math.min(arr[i], arr[i / 3] + 1); // ์œ„์˜ ์ฝ”๋“œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€ (3์œผ๋กœ ๋‚˜๋ˆ„์–ด์กŒ๋˜ ๊ณผ๊ฑฐ ์ˆซ์ž๋“ค์„ ์ฐพ์•„์•ผ๋˜๋ฏ€๋กœ i/3)
    }
  }
  console.log(arr[num]);
}).on("close", function () {
  process.exit();
});


์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ