250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(프로그래머스 c++)콜라츠 추측 본문
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
반응형
'프로그래머스 알고리즘 > 1단계' 카테고리의 다른 글
(프로그래머스 c++)하샤드 수 (0) | 2020.04.29 |
---|---|
(프로그래머스 c++)평균 구하기 (0) | 2020.04.29 |
(프로그래머스 c++)최대 공약수와 최소 공배수 (0) | 2020.04.28 |
(프로그래머스 c++)짝수와 홀수 (0) | 2020.04.28 |
(프로그래머스 c++)제일 작은 수 제거하기 (0) | 2020.04.28 |