Problem Solving/프로그래머스

[프로그래머스/JavaScript] 콜라츠 추측

세고래 2022. 9. 8. 14:48

https://school.programmers.co.kr/learn/courses/30/lessons/12943?language=javascript

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


1) 풀이

다시 알고리즘 공부를 한 이후, 유일하게 자료를 참고하지 않은 문제!
(자료 안 찾아보고 푸는 게 당연한 거지만.. 오랜만에 공부를 다시 시작해서 감을 익히고 있는 과정이다😂)
그도 그럴 것이, 난이도 굉~ 장히 쉽고 딱히 복잡한 연산이 필요하지도 않았다
그래서 추석땜에 케텍스로 내려가는 길에.. 호다닥 푼 스낵 문제
하지만 다른 분들이 푼 코드가 궁금해서 본 결과, '삼항연산자' 를 이용해 깔끔하게 푼 코드가 인상적이었다!
개발할 땐 자주 사용하는데, 알고리즘 풀 때는 별로 안 사용하는듯..?
훨씬 깔끔해지는 건 사실이니까 앞으로 자주 이용해봐야겠다

function collatz(num) {
    var answer = 0;
    while(num !=1 && answer !=500){
        num%2==0 ? num = num/2 : num = num*3 +1;
    answer++;
  }
    return num == 1 ? answer : -1;
}

위가 다른 분들이 푼 코드이다

2) 최종 소스코드
function solution(num) {
    let answer = 0;
    while(num!==1){
        if(num%2===0){
            num=num/2;
        }
        else if(num%2===1){
            num=num*3+1;
        }
        ++answer;
        if(answer===500){
            answer=-1;
            break;
        }
    }
    
    return answer;
}
728x90