프로그래머스 Lv.1 코딩테스트

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

하다블 2022. 2. 16. 18:01
반응형

문제는 다음과 같습니다.

코딩테스트 연습 - 콜라츠 추측 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 콜라츠 추측

1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2

programmers.co.kr

#include <string>
#include <vector>

using namespace std;

int solution(int num)
{
    int answer = 0;
    long NUM = num;
    while (NUM != 1)
    {
        if (answer == 500) 
        {
            answer=-1;
            break;
        }
        if (NUM%2==0)
        {
            NUM/=2;
        }
        else 
        {
            NUM=3*NUM+1;
        }
        answer++;
    }
    return answer;
}

문제에 주어진 대로 조건을 주어주면 되나, long으로 정의한 변수인 NUM이 int 형인 경우에는 오답이 발생할 수 있습니다.

홀수이면 무조건 3을 곱하고 1을 더하는 방식이기 때문에 int 범위를 벗어나는 경우가 발생하기 때문입니다.

이 점만 고려하신다면 어렵지 않게 해결하실 수 있을 겁니다.

 

반응형