본문 바로가기
Algorithm/programmers

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

by shine-jung 2021. 7. 24.
반응형

문제 링크

 

코딩하기 전 생각하기

/*
다음을 500번 반복한다.
    숫자가 1이면 break한다.
    숫자가 짝수이면 2로 나눈다.
    숫자가 홀수이면 3을 곱하고 1을 더한다.
반복문이 끝날 때 까지 1이 나오지 않았으면 -1을 반환한다.
반복된 수를 반환한다.
*/

 


 

코드

#include <bits/stdc++.h>
using namespace std;

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

 


 

느낀점

 

디버깅을 해보니 num을 int로 했을 때 오버플로우가 생겨서 long long으로 변환시켜주었다.

 

(주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다.

댓글 환영합니다!

반응형

댓글