본문 바로가기

알고리즘 · 코딩

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

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/12943

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


C++ 풀이

#include <string>
#include <vector>
using namespace std;

int answer;

void func(long &num) {
	if (num % 2 == 0)
		num /= 2;
	else
		num = (num * 3) + 1;
}

int solution(int num) {
	long t = num; //int -> long 타입 변환 후 풀이
	answer = 0;
	while (t != 1) {
		func(t);
		answer++;
		if (answer > 500)
			return -1;
	}
	return answer;
}

문제 값 자체는 int타입으로 주어지지만, 중간 계산값이 범위를 초과되는 경우를 고려하여 long으로 타입 변환 후 풀었다.

 

 

 

반응형