반응형
문제는 다음과 같습니다.
코딩테스트 연습 - 콜라츠 추측 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 콜라츠 추측
1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2
programmers.co.kr
#include <string>
#include <vector>
using namespace std;
int solution(int num)
{
int answer = 0;
long NUM = num;
while (NUM != 1)
{
if (answer == 500)
{
answer=-1;
break;
}
if (NUM%2==0)
{
NUM/=2;
}
else
{
NUM=3*NUM+1;
}
answer++;
}
return answer;
}
문제에 주어진 대로 조건을 주어주면 되나, long으로 정의한 변수인 NUM이 int 형인 경우에는 오답이 발생할 수 있습니다.
홀수이면 무조건 3을 곱하고 1을 더하는 방식이기 때문에 int 범위를 벗어나는 경우가 발생하기 때문입니다.
이 점만 고려하신다면 어렵지 않게 해결하실 수 있을 겁니다.
반응형
'프로그래머스 Lv.1 코딩테스트' 카테고리의 다른 글
[프로그래머스 Lv.1] 최대공약수와 최소공배수 (0) | 2022.02.16 |
---|---|
[프로그래머스 Lv.1] 제일 작은 수 제거하기 (0) | 2022.02.16 |
[프로그래머스 Lv.1] 평균 구하기 (0) | 2022.02.09 |
[프로그래머스 Lv.1] 하샤드 수 (0) | 2022.02.09 |
[프로그래머스 Lv.1] 핸드폰 번호 가리기 (0) | 2022.02.09 |