풀이:
function solution(num) {
let answer = 0
for (let i = 0; i < 500; i++) {
if (num !== 1) {
if(num % 2 === 0) {
num /= 2
} else {
num = num *3 +1
}
} else {
return answer = i
}
}
return answer = -1
}
심플하게 500번 반복문을 써주고, 그안에 만약 받은 정수가 1이 아니라면 실행해주는 if else 문을 썻다
만약 % 2 로 나머지값이 0 이라면 정수를 반으로 나누고 그값을 저장,
아니면 정수 * 3 + 1 값을 저장하는 방법으로 만약 받은 정수 값이 1이 된다면 몇번째의 반복문 값을 리턴,
만약 500번안에 못하면 -1 값을 리턴해준다.
다른사람 풀이:
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;
}
이분은 condition 이 맞을때까지 돌려주는 반복문 while 을 썻다.
while condition 은 받은 정수가 1이 아니고 500번 안돌렸을떄이다.
그리고 실행을 할때마다 answer 에 카운트를 1씩 더함으로 정수가 1되는 순간 몇번 돌렸는지 보여준다.
만약 500번까지 정수값이 1이 아닐경우 -1 값을 돌려준다.
function collatz(num,count = 0) {
return num == 1 ? (count >= 500 ? -1 : count) : collatz(num % 2 == 0 ? num / 2 : num * 3 + 1,++count);
}
'코드 풀이' 카테고리의 다른 글
같은 숫자는 싫어 (0) | 2022.03.14 |
---|---|
하샤드 수 (0) | 2022.03.14 |
정수 제곱근 판별 (0) | 2022.03.14 |
제일 작은 수 제거하기 (0) | 2022.03.14 |
정수 내림차순으로 배치하기 (0) | 2022.03.12 |