카테고리 없음

(어렵)항해3주차 자바스크립트 프로그래머스 - 콜라츠 추측

완두노예 2023. 2. 1. 18:20

나의 풀이 (참고) // 각각 메소드와 코드 순서를 짜는게 아직은 미숙함

function solution(num) {
    let answer = 0;
    
    while (num != 1) {
        if (num % 2 == 0){
            num /= 2;
        } else {
            num = (num * 3) + 1;
        }
        answer += 1;
    }
    if (answer >= 500) {
        return -1;
    } else {
        return answer;
    }
}
  • 주어진 answer 변수를 카운트를 세는 변수로 사용하였다
  • while 문을 이용해 주어진 수가 1이 아니라면 계속 while 문이 반복되게 조건을 설정
  • 주어진 수가 짝수라면 나누기 2를
  • 주어진 수가 홀수라면 3을 곱하고 1을 더해주는 if문ㅇ르 while문 안에 작성하였다
  • while문 안에 들어간 수가 짝수/홀수를 판별해 식을 한 번 돌고 나올 때마다 answer += 1 로 while 문을 반복하는 횟수를 카운팅 해주었다
  • while문을 반복한 횟수가 500번을 넘는다면 -1을, 아니라면 answer을 return 하게 하였다.

다른 풀이

function solution(num) {
    var count = 0;

    while (count < 500) {
        if (num === 1) {
            return count;
        }
        count ++;
        num = num % 2 === 0 ? num /2 : num *3 +1;
    }

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