코딩테스트/프로그래머스
[프로그래머스] 콜라츠 추측 (C++)
Deff_a
2024. 11. 19. 23:10
문제
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
이 문제는 num이 짝수 일 때는 num / 2를 하고, 홀수 일 때는 num * 3 + 1 규칙을 500번 적용시킨다 했을 때, 500번 안에 num이 1이 된다면 해당 규칙을 적용시킨 횟수를 반환하고, num이 1이 되지 않는다면 -1를 반환하는 문제이다.
쉬운 문제지만, num의 타입을 int가 아닌 long으로 변환한 뒤, 규칙을 적용시켜야 한다. (테스트 케이스 3번)
using namespace std;
int solution(int num) {
if(num == 1) return 0;
long n = num;
for(int i = 1; i <= 500; i++){
if(n % 2 ==0) n /=2;
else n = (n * 3) + 1;
if( n == 1) return i;
}
return -1;
}