JS.연습문제 (콜라츠 추측)

Vorhandenheit ·2021년 6월 17일

JS.연습문제

목록 보기
6/12

<문제>

1937년 Collatz란 사람에 의해 제기된 이 추축, 주어진 수가 1이 될때까지 다음 작업을 반복, 모든 수를 1로 만들 수 있다는 추축
1-1. 입력된 수가 짝수라면 2로 나누
1-2. 입려괸 수가 홀수라면 3을 곱하고 1을 더함
2.결과로 나온 수에 같은 작업을 1이 될때가지 반복

1.while문으로 반복
2.if문을 작성하여 짝수라면 2로 나누고 홀수라면 3을 곱하고 1을 더한다
3.다시 그값을 위로 보내고 반복
4.1이될 때까지 반복한다

function solution(n) {
	let count = 0
  while (n === 1 || count > 500) {
  
  	if (n % 2 === 0) {
    	n = n / 2
    }
    else if (n % 2 !== 0) {
    	n = (n * 3) + 1
    }
    count ++
    else if (count > 500) {
    	return -1
    }
  }
 return count
}

<다른사람의 풀이>

function solution(num) {
	let answer = 0;
  while (num !== 1) {
  	num % 2 ? num = num * 3 + 1 : num /2 = 2;
    answer++;
    if (answer >= 500) {
    	answer = -1;
      	break;
    }
  }
  return answer
}

<다른사람의 풀이>

function collatz(num, count = 0) {
	return num == 1 ? (count >= 500 ? -1: count) : collaztz(num % 2 == 0 ? num / 2: num * 3+ 1, ++count);
}
profile
읽고 기록하고 고민하고 사용하고 개발하자!

0개의 댓글