본문 바로가기
프로그래머스/C

[프로그래머스/C]프로그래머스 Level 1 : 콜라츠 추측 C언어

by starfish22 2021. 12. 20.
728x90

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

 

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

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

programmers.co.kr

 

▶코드 작성

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int num)
{
    long long answer = num;//num값이 int최댓값을 넘을 수 있으므로 long long
    for (int i = 0; i < 500; i++)
    {
        if (answer == 1) return i;//1이면 i반환

        if (answer % 2 == 0) answer /= 2;//짝수일 때
        else answer = answer * 3 + 1;//홀수일 때
    }
    return -1;
}

 

▶해석

num값이 크면 홀수일 때 int최댓값을 넘을 수 있으므로 long long으로 미리 바꾸어준다. for문을 이용하여 i를 500이 넘을 때까지 반복하여 1이 되면 i값을 반환하고 i값이 500을 넘으면 -1을 반환한다.

728x90

댓글