-
[프로그래머스/C++] 콜라츠 추측C++ 문제 풀이/프로그래머스 2024. 1. 14. 17:19
1. 문제 설명
2. Solution
#include <string> #include <vector> using namespace std; int solution(int num) { int answer = 0; long long ln = num; while(ln != 1) { if(answer == 500){ answer = -1; break; } ln % 2 == 0 ? ln /= 2 : ln = ln * 3 + 1; answer++; } return answer; }
이 문제는 겉으로 보면 굉장히 쉬운문제이다. 하지만 치명적인 함정이 숨어있었다. 처음에 이 문제를 풀었을 때 코드 실행은 되지만 채점에서 몇가지 케이스에서 실패가 나왔다. 그 이유는 홀수의 경우 3을 곱하고 1을 더한다. 제한사항에서 num은 8,000,000미만인 정수라고 하였다. 따라서 숫자가 매우 크기 때문에 다음과 같은 연산을 반복하다 보면 int의 범위를 넘어가는 일이 발생한다. 이 경우의 수를 간과하고 있었고 num을 long long 타입으로 변경하여 해결하였다.
'C++ 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/C++] 제일 작은 수 제거하기 (0) 2024.01.14 [프로그래머스/C++] 없는 숫자 더하기 (0) 2024.01.14 [프로그래머스/C++] x만큼의 간격이 있는 n개의 숫자 (0) 2023.07.04 [프로그래머스/C++] 짝수와 홀수 (0) 2023.07.04 [프로그래머스/C++] 나머지 1이 되는 수 찾기 (0) 2023.07.04