🍞 Problem Solving/Programmers

[프로그래머스][Level1] 콜라츠 추측 c++

박빵이 2022. 9. 3. 13:34

풀이과정

무한 반복문을 돌려주되, 탈출 조건은 두 가지가 있다.  
첫 번째로는 입력된 수가 1이 될 경우  
두 번째로는 500번을 수행해도 1이 안 될 경우이다.

그러므로 num이 1이 된다면 while문을 탈출해 answer을 출력해주도록 하였고,  
answer이 501번이 되면 return -1을 해주며 함수를 끝내는 식으로 구현했다.

 

#include <string>
#include <vector>

using namespace std;

int solution(int num) {
    int answer = 0;

    while(1){
        if(num == 1) break;
        if(answer == 501) return -1;

        if(num % 2 == 0) num /= 2;
        else if(num % 2 == 1) num = num * 3 + 1;
        answer++;
    }
    return answer;
}