๐ฑ ํ๋ก๊ทธ๋๋จธ์ค 1๋จ๊ณ : ์ฝ๋ผ์ธ ์ถ์ธก ๐ฑ
#1. ์ฃผ์ด์ง ์๊ฐ 6์ด๋ผ๋ฉด 6 โ 3 โ 10 โ 5 โ 16 โ 8 โ 4 โ 2 โ 1 ์ด ๋์ด ์ด 8๋ฒ ๋ง์ 1์ด ๋ฉ๋๋ค. ์ ์์ ์ ๋ช ๋ฒ์ด๋ ๋ฐ๋ณตํด์ผ ํ๋์ง ๋ฐํํ๋ ํจ์, solution์ ์์ฑํด ์ฃผ์ธ์. ๋จ, ์ฃผ์ด์ง ์๊ฐ 1์ธ ๊ฒฝ์ฐ์๋ 0์, ์์ ์ 500๋ฒ ๋ฐ๋ณตํ ๋๊น์ง 1์ด ๋์ง ์๋๋ค๋ฉด -1์ ๋ฐํํด ์ฃผ์ธ์.
์ฝ๋ผ์ธ ์ถ์ธก
1937๋
Collatz๋ ์ฌ๋์ ์ํด ์ ๊ธฐ๋ ์ด ์ถ์ธก์, ์ฃผ์ด์ง ์๊ฐ 1์ด ๋ ๋๊น์ง ๋ค์ ์์
์ ๋ฐ๋ณตํ๋ฉด, ๋ชจ๋ ์๋ฅผ 1๋ก ๋ง๋ค ์ ์๋ค๋ ์ถ์ธก์
๋๋ค.
1-1. ์
๋ ฅ๋ ์๊ฐ ์ง์๋ผ๋ฉด 2๋ก ๋๋๋๋ค.
1-2. ์
๋ ฅ๋ ์๊ฐ ํ์๋ผ๋ฉด 3์ ๊ณฑํ๊ณ 1์ ๋ํฉ๋๋ค.
2. ๊ฒฐ๊ณผ๋ก ๋์จ ์์ ๊ฐ์ ์์
์ 1์ด ๋ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
์ ํ ์ฌํญ : ์ ๋ ฅ๋ ์, num์ 1 ์ด์ 8,000,000 ๋ฏธ๋ง์ธ ์ ์์ ๋๋ค.
function solution(num) {
var answer = 0;
while(num!=1){
if(num%2==0){
num /= 2
}else if(num%2==1){
num = num*3+1
}
answer+=1
}
if(answer>=500){
return -1
}else{
return answer;
}
}
1. while๋ฌธ์ ์ฌ์ฉํ์ฌ num์ด 1์ด ๋ ๋ ๊น์ง ๋ฐ๋ณต์ํต๋๋ค. (์กฐ๊ฑด์ num๊ฐ์ด 1์ด ์๋๋ผ๋ฉด ๊ณ์ ๋ฐ๋ณต)
2. if๋ฌธ์ผ๋ก ์ง์์ผ ๋์ ํ์์ผ ๋ ์กฐ๊ฑด๋ฌธ์ ๋ฌ์์ค ๋ค ๋ฐ๋ณตํ์๋ฅผ answer ๊ฐ์ผ๋ก ๋ฃ์ด์ค๋๋ค.
3. ๋ฐ๋ณต๋ฌธ ๋ฐ์ผ๋ก ๋ฒ์ด๋ if๋ฌธ์ ํตํด ๋ง์ฝ ๋ฐ๋ณตํ์๊ฐ 500์ด์์ผ ๊ฒฝ์ฐ ๋ฆฌํด -1์ ๋ฐํํ๊ณ ์๋ ๊ฒฝ์ฐ answer ๊ฐ์ ๋ฆฌํด์ผ๋ก ๋ฐํํฉ๋๋ค.
#2. ๋ค๋ฅธ์ฌ๋์ ํ์ด
function collatz(num) {
var answer = 0;
while(num !=1 && answer !=500){
num%2==0 ? num = num/2 : num = num*3 +1;
answer++;
}
return num == 1 ? answer : -1;
}
while๋ฌธ๊ณผ ์กฐ๊ฑด์ผํญ์๋ก ํ๋ฒ์ ์์ฑํด์ฃผ์์ต๋๋ค. ์์ฃผ ๊น๋ํฉ๋๋ค!
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค 1๋จ๊ณ : x๋งํผ ๊ฐ๊ฒฉ์ด ์๋ n๊ฐ์ ์ซ์ (1) | 2022.11.14 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค 1๋จ๊ณ : ๋ ์ ์ ์ฌ์ด์ ํฉ (1) | 2022.11.14 |
ํ๋ก๊ทธ๋๋จธ์ค 1๋จ๊ณ : ๋ฌธ์์ด ๋ด p์ y์ ๊ฐ์ (1) | 2022.11.11 |
ํ๋ก๊ทธ๋๋จธ์ค 1๋จ๊ณ : ๋ฌธ์์ด ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฐ์นํ๊ธฐ (1) | 2022.11.10 |
ํ๋ก๊ทธ๋๋จธ์ค 1๋จ๊ณ : ์ ์ผ ์์ ์ ์ ๊ฑฐํ๊ธฐ (2) | 2022.11.09 |
๋๊ธ