ABOUT ME

Today
Yesterday
Total
  • (어렵)항해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;
    }

    댓글

Designed by Tistory.