Deff_Dev

[프로그래머스] 콜라츠 추측 (C++) 본문

코딩테스트/프로그래머스

[프로그래머스] 콜라츠 추측 (C++)

Deff_a 2024. 11. 19. 23:10

문제

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

풀이

이 문제는 num이 짝수 일 때는 num / 2를 하고, 홀수 일 때는 num * 3 + 1 규칙을 500번 적용시킨다 했을 때, 500번 안에 num이 1이 된다면 해당 규칙을 적용시킨 횟수를 반환하고, num이 1이 되지 않는다면 -1를 반환하는 문제이다.

 

쉬운 문제지만, num의 타입을 int가 아닌 long으로 변환한 뒤, 규칙을 적용시켜야 한다. (테스트 케이스 3번)

using namespace std;

int solution(int num) {
    if(num == 1) return 0;
    long  n = num;
    
    for(int i = 1; i <= 500; i++){
        if(n % 2 ==0) n /=2;
        else n = (n * 3) + 1;

        if( n == 1) return i;
    }
    return -1;
}