본문 바로가기
Algorithm/프로그래머스(Programmers)

[ 자바스크립트(JS), 파이썬(python) ] 프로그래머스 level1 - 콜라츠 추측

by YWTechIT 2021. 3. 31.
728x90

📌 콜라츠 추측

주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측이다.

  1. 입력된 수가 짝수라면 2로 나눕니다.
  2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
  3. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.

💡 나의 풀이

이전에 백준인가 어디서 한번 풀어봤던 문제였다. while문을 사용하면 쉽게 해결 할 수 있다. 해결 과정은 다음과 같다.

  1. n이 짝수 일 때, 기존 n에 2로 나눈 몫을 n으로 저장한다.
  2. n이 홀수 일 때, 기존 n에 3을 곱하고 1을 더한 n으로 저장한다.
  3. 1번과 2번의 과정을 거쳤다면 cnt를 1 증가시킨다.
  4. 만약, cnt가 500번 이상일때는 -1을 반환시키고 종료한다.
  5. n이 1보다 작거나 같아진다면 while문을 종료시킨다.
728x90

JS도 마찬가지로 구현해주면 된다. 특이점은 삼항연산자를 이용했다.

# python 코드
def solution(n):
    cnt = 0
    while n > 1:
        if n % 2 == 0:
            n //= 2
        else:
            n = (n * 3) + 1
        cnt+=1
        if cnt >= 500:
            return -1
    return cnt
print(solution(626331))
// JS 코드
function solution(num){
    let cnt = 0;
    while (num > 1){
        num % 2 ? (num = num * 3 + 1) : (num /= 2);
        cnt += 1;
        if (cnt > 500){
            return -1;
        }
    }
    return cnt
}
반응형

댓글