https://programmers.co.kr/learn/courses/30/lessons/12943?language=java
문제 분석
- 입력된 수가 1이 될 때까지 while문을 통해 반복한다.
- 이 때, int형 num을 long형 n으로 선언하여 처리한다. (오버플로우를 대비)
- 만약 500번 넘게 작업을 반복했다면 if문을 통해 answer의 값을 -1로 설정하고 break문으로 빠져나온다.
- while문으로 반복하는 동안 짝수라면 2로 나누고 홀수라면 3을 곱하고 1을 더한다.
문제 풀이
1. int형 num의 값을 long형 n에 담는다.
2. while문을 통해 n(입력된 수)이 1이 아니면 계속 반복한다.
3. 만약 500번 반복한다면 -1을 출력한다.
4. 반복되는 동안 짝수인 경우 2로 나누고, 홀수인 경우 3을 곱하고 1을 더한다.
5. 500번을 체크하기 위해 answer의 값을 증가(++)해준다.
class Solution {
public int solution(int num) {
int answer = 0;
long n = num;
while(n!=1){
if(answer==500){
answer =-1;
break;
}
if(n%2==0){
n /= 2;
}else{
n = n*3+1;
}
answer++;
}
return answer;
}
}
'Algorithm > programmers' 카테고리의 다른 글
programmers 최솟값 구하기 (0) | 2022.01.16 |
---|---|
programmers 최댓값 구하기 (0) | 2022.01.16 |
programmers 평균 구하기 (0) | 2022.01.09 |
programmers 하샤드 수 (0) | 2022.01.09 |
programmers 핸드폰 번호 가리기 (0) | 2022.01.09 |