[프로그래머스] Lv.1 - 콜라츠 추측

dev.galim·2023년 9월 14일
0

문제 설명

문제 풀이

function solution(num) {
    let count = 0;
    
    function test(n) {
        if(count > 499) return -1;
        if(n === 1) return count;
        
        count++;
        n % 2 === 0 ? res(n / 2) : res((n * 3) + 1);
    }
    
    test(num);
    return count > 499 ? -1 : count;
}

풀이 해석

  1. 먼저 작업 횟수를 카운트하는 count 변수를 만들어준다.
  2. 작업을 수행하는 함수 res를 만들어준다.
    2-1. 먼저 에러처리를 하는 if문을 만들어준다.
    a. 작업을 500번 반복할때까지 1이 되지 않는다면 -1을 리턴하는 로직.
    if(count > 499) return -1;
    b. 주어진 수가 1이라면 count 변수를 리턴하는 로직.
    if(n === 1) return count;
    2-2. 주어진 수가 if문에 해당하지 않았다면 먼저 count를 증가시킨다.
    count++;
    2-3. 삼항연산자를 사용하여 주어진 수가 짝수일 경우, 2로 나누고 홀수일 경우 3을 곱한 후 1을 더해준다.
    n % 2 === 0 ? test(n / 2) : test((n * 3) + 1);
  3. res의 인자로 num을 넣어주고, 반복횟수가 499번보다 크다면 -1을, 그렇지 않다면 count를 리턴해준다.

프로그래머스 레벨1 문제들 중 어중간한 문제들은 다 풀어서 이제 어려운 문제들밖에 안남았다...
레벨1도 이렇게 어려운데 2-3단계는 얼마나 어려울지 정말 감도 안온다..
콜라츠 추측은 전에도 여러번 풀기 위해 노력했지만 실패한 문제로 아직도 로직을 정확히 파악했다하긴 애매하다..😂
사실 계속 while문을 사용하여 풀어보고 싶었는데 아무리 풀어봐도 풀리지 않았다...
평소 알고리즘 문제를 풀때도 자주 사용하는 함수가 아닌 새로운 함수를 사용하고 싶어서 계속 시도해보는데 익숙치 않아서 그런가 계속 오류가 나와서 결국은 익숙한 방식으로 풀게 되는 것 같다.
새로운 형태로 푸는 것에 익숙해지도록 꾸준히 문제를 풀어야겠다💪🏻

profile
열심히 해볼게요

0개의 댓글