프로그래머스 알고리즘/1단계
(프로그래머스 c++)콜라츠 추측
naeunchan
2020. 4. 28. 23:30
728x90
반응형
입력으로 들어온 num을 1이 될 때까지 반복하여 문제를 푸는 문제이다..!
그런데 long long tmp = num을 한 이유는..?
바로 오버플로우 때문이다.
int num을 이용하여 while문을 돌게 되면 3번째 예시로 들어온 626331의 답이 488로 나오게 된다.
이는 오버플로우로 인해 값이 손실되었기 때문이다..!
그래서 long long 형 변수를 선언하여 문제를 풀어야 한다..!
#include <string>
#include <vector>
using namespace std;
int solution(int num) {
int answer = 0;
long long tmp = num;
while(tmp != 1)
{
if(answer > 500)
return -1;
if(tmp % 2 == 0)
tmp /= 2;
else
tmp = tmp * 3 + 1;
answer++;
}
return answer;
}
728x90
반응형