• Qusetion
프로그래머스 #12943
콜라츠 추측 : 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.
programmers.co.kr
  • My Code
#include <string>
#include <vector>

using namespace std;

int solution(int num) {
    int answer = 0;
    long long n = num;
    for(int i = 0 ; i < 500; i++)
    {
        if(n == 1)
            break;
        if(n % 2 == 1)
            n =  3 * n +1;
        else
            n /= 2;
        answer++;
    }
    if(answer >= 500)
        return -1;
    else
        return answer;
}
  • Better Code
#include<iostream>
using namespace std;

int collatz(int num)
{
    int answer = 0;
  cout<< num <<"\n";
  while(answer++ <= 500){
    num = num%2 ==0 ? num/2 : num*3+1;
    if(num == 1) break;
  }

    return answer > 500 ? -1 : answer;
}

int main()
{
    int testCase = 6;
    int testAnswer = collatz(testCase);

    cout<<testAnswer;
}

 

" int 정수의 범위를 파악하자. "


  • CheckPoint
  • int 형 n의 정수형 수용범위를 확인하고, 필요할시 long이나 long long
  • > 형을 사용할 생각을 하자.
  • 이제는 짝수or홀수로 조건문의 조건을 작성할 때 if( n & 1 ) 형태를 기억.
    %연산자보다 비트연산자가 처리속도가 빠르다.
  • 3항연산자를 잘 쓰면 코드가 짧아진다.

 

728x90
반응형

+ Recent posts