본문 바로가기
알고리즘 스터디/[프로그래머스] 연습문제

[알고리즘] 콜라츠 추측 문제풀기(자바스크립트 javascript)

by 제니운 2022. 7. 19.
728x90

(풀기 전에 알아야 할 것)

 

🔹 while : 반복되게 설정

 

👌 num 이 짝수라면 2로 나누고 홀수라면 3을 곱하고 1을 더해라

 

if(num % 2 == 0){
            num = num/2     // num /= 2 이렇게 표현할 수도 있다.
        }else{
            num = (num * 3) + 1
        }

 

👌 while 반복함수를 사용하는데, 이 조건을 사용해서 1이 안되면 반복하는 것

 

while(num != 1){
        if(num % 2 == 0){
            num = num/2
        }else{
            num = (num * 3) + 1
        }   //  여기까지가 짝수일때, 홀수일때 조건문
        answer += 1;  
    }

 

while 문 안에 들어간 수가 짝수, 홀수를 판별해서 식을 한 번 돌고 나올 때마다, answer +=1로 while 문을 반복하는 횟수를 카운팅 해주는 것이다.

 

여기서 answer += 1 이거는, 몇 번 반복했는지에 대한 횟수이다.

 

👌 횟수가 500번이 넘으면, 1을 반환해라

 

if(answer >= 500){
        return -1    // 500번을 넘기면 -1 반환하고 
    }else{
        return answer   //500번 미만이면 횟수 반환하기
    }

 

 

✅ 최종 코드

 

function solution(num) {
    var answer = 0;

    while(num != 1){
        if(num % 2 == 0){
            num = num/2
        }else{
            num = (num * 3) + 1
        }
        answer += 1;
    }
    if(answer >= 500){
        return -1
    }else{
        return answer
    }
}
728x90