/*
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๋ฌธ์ ์ฌ์ฉํด์ ํ์ด๋๋ค.
๋ง์ง๋ง์ ์ผํญ์ฐ์ฐ์๋ก ๊ฐ๋ ์ฑ์ ์ข ๋ ์ข๊ฒ ๋ง๋ค์ด๋ดค๋ค.
'๐ฅ CS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ํ๋ก๊ทธ๋๋จธ์ค - ๋ ๊ฐ ๋ฝ์์ ๋ํ๊ธฐ (0) | 2022.07.16 |
---|---|
[Algorithm] ํ๋ก๊ทธ๋๋จธ์ค - ํ์ค๋ ์ (0) | 2022.07.16 |
[Algorithm] ํ๋ก๊ทธ๋๋จธ์ค - ์ ์ผ ์์ ์ ์ ๊ฑฐํ๊ธฐ (0) | 2022.07.16 |
[Algorithm] ํ๋ก๊ทธ๋๋จธ์ค - ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์? (0) | 2022.07.15 |
[Algorithm] ํ๋ก๊ทธ๋๋จธ์ค - ๋๋์ด ๋จ์ด์ง๋ ์ซ์ ๋ฐฐ์ด (0) | 2022.07.15 |