쌓고 쌓다
[프로그래머스] 콜라츠 추측 C++ 풀이 본문
https://school.programmers.co.kr/learn/courses/30/lessons/12943?language=cpp
전체 코드
#include <string>
#include <vector>
using namespace std;
int solution(int num) {
int answer = 0;
long long n = num;
while(n!=1&&answer<=500)
{
if(n%2==0)
n/=2;
else
{
n*=3;
n+=1;
}
answer++;
}
if(answer==501)
answer=-1;
return answer;
}
num을 int형 그대로 사용해서 푼다면
입출력 예#3에 626331을 입력한다면 엉뚱하게 488이 나올것이다.
이것은 오버플로우로인한 문제로 곱하기 3과 +1을 하는 과정에서 int 범위를 넘어서기에 발생한다.
그래서 long long형으로 풀어야한다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 최대공약수와 최소공배수 C++ 풀이 (0) | 2022.07.09 |
---|---|
[프로그래머스] 하샤드 수 C++ 풀이 (0) | 2022.07.09 |
[프로그래머스] 정수 제곱근 판별 C++ 풀이 (0) | 2022.07.08 |
[프로그래머스] x만큼 간격이 있는 n개의 숫자 C++ 풀이 (0) | 2022.07.08 |
[프로그래머스] 행렬의 덧셈 C++ 풀이 (0) | 2022.07.08 |
Comments