/*
https://school.programmers.co.kr/learn/courses/30/lessons/12943

1937๋…„ Collatz๋ž€ ์‚ฌ๋žŒ์— ์˜ํ•ด ์ œ๊ธฐ๋œ ์ด ์ถ”์ธก์€, ์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ 1์ด ๋  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜๋ฉด, ๋ชจ๋“  ์ˆ˜๋ฅผ 1๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์ถ”์ธก์ž…๋‹ˆ๋‹ค. ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ์„ค๋ช…
1-1. ์ž…๋ ฅ๋œ ์ˆ˜๊ฐ€ ์ง์ˆ˜๋ผ๋ฉด 2๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. 
1-2. ์ž…๋ ฅ๋œ ์ˆ˜๊ฐ€ ํ™€์ˆ˜๋ผ๋ฉด 3์„ ๊ณฑํ•˜๊ณ  1์„ ๋”ํ•ฉ๋‹ˆ๋‹ค. 
2. ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜จ ์ˆ˜์— ๊ฐ™์€ ์ž‘์—…์„ 1์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. 
์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ 6์ด๋ผ๋ฉด 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 ์ด ๋˜์–ด ์ด 8๋ฒˆ ๋งŒ์— 1์ด ๋ฉ๋‹ˆ๋‹ค. ์œ„ ์ž‘์—…์„ ๋ช‡ ๋ฒˆ์ด๋‚˜ ๋ฐ˜๋ณตํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ๋‹จ, ์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ 1์ธ ๊ฒฝ์šฐ์—๋Š” 0์„, ์ž‘์—…์„ 500๋ฒˆ ๋ฐ˜๋ณตํ•  ๋•Œ๊นŒ์ง€ 1์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด –1์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ
์ž…๋ ฅ๋œ ์ˆ˜, num์€ 1 ์ด์ƒ 8,000,000 ๋ฏธ๋งŒ์ธ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค.
*/

const solution = (n) => {
  // ์ œ์•ฝ์กฐ๊ฑด์„ ์ด์šฉํ•ด 500๋ฒˆ๊นŒ์ง€ for๋ฌธ ๋Œ๋ ค์„œ,
  for (let i = 0; i <= 500; i++) {
    // n์ด 1์ด๋ฉด i๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ 
    if (n === 1) return i;
    // ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋กœ n์ด ์ง์ˆ˜๋ฉด n์€ n/2 ๊ฐ’์„ ์ €์žฅ, ์•„๋‹ˆ๋ฉด n = n * 3 +1 ๊ฐ’์„ ์ €์žฅํ•ด ๋ฐ˜๋ณต๋ฌธ ๋ฐ˜๋ณต
    n % 2 === 0 ? (n = n / 2) : (n = n * 3 + 1);
  }
  // 500๋ฒˆ ๋ฐ˜๋ณตํ• ๋–„๊นŒ์ง€ 1์ด ์•ˆ๋œ๋‹ค๋ฉด -1 ๋ฆฌํ„ด
  return -1;
};

console.log(solution(6));
console.log(solution(16));
console.log(solution(626331));

while ๋ฌธ์œผ๋กœ ์“ฐ์‹ ๋ถ„๋“ค๋„ ์žˆ์ง€๋งŒ, ์ œ์•ฝ์กฐ๊ฑด์ด 500๋ฒˆ ๋ฐ˜๋ณต์ด์–ด์„œ for๋ฌธ์ด ์ข€ ๋” ๊น”๋”ํ• ๊ฑฐ ๊ฐ™์•„ for๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ํ’€์–ด๋ƒˆ๋‹ค.

๋งˆ์ง€๋ง‰์€ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋กœ ๊ฐ€๋…์„ฑ์„ ์ข€ ๋” ์ข‹๊ฒŒ ๋งŒ๋“ค์–ด๋ดค๋‹ค.

๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!