문제 풀이 (JAVA)
class Solution {
public int solution(int num) {
int count=0; // 리턴 할 카운트 변수 선언
long longnum= num; // int 형은 컴파일 도중 범위 초과 오류가 뜨므로 long 선언
while(longnum !=1){ // 1이라면 while문 중단 (값이 1일동안 무한 루프)
if(longnum % 2 == 0){ // 2로 나눈 나머지가 0이면 짝수
longnum= longnum/2;
count++;
}else if(longnum % 1 == 0){ // 1로 나눈 나머지가 0이면 홀수
longnum=(longnum*3)+1;
count++;
}
if(count>=500){ // 제한 조건 반복 횟수 500을 넘기면 -1을 리턴
count = -1;
break;
}
}
return count;
}
}
주요 핵심 포인트
1. while 문에서 곱하는 과정에서 값이 커지기 때문에 int형 범위를 초과하는 숫자가 있을수 있으므로 long으로 선언.
2. while 문이 도는 조건은 값이 1이 아닐동안 콜라츠 추측을 반복한다. 따라서 1일 때 반복문 중단
3. 제한 조건 반복횟수 500을 초과하면 -1을 리턴하도록 if문 세팅 필요.
'프로그래머스(JAVA)' 카테고리의 다른 글
짝수와 홀수 (0) | 2022.04.16 |
---|---|
최대공약수와 최소공배수 (0) | 2022.04.16 |
평균 구하기 Level.1 (0) | 2022.04.16 |
하샤드 수 Level.1 (0) | 2022.03.20 |
핸드폰 번호 가리기 Level.1 (0) | 2022.03.20 |