반응형
알고리즘
JAVA 프로그래머스 콜라츠 추측
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/12943
2. 풀이
- while문을 돌려주는데 1이 되면 반환해야하기 때문에 != 연산자를 이용해 1이 아닐 때 반복
- 짝수일 때 나누기2, 홀수 일 때 *3+1
- 돌때마다 count를 올려주는데 if문으로 500번 이상 돌면 -1을 출력
class Solution {
public int solution(int n) {
long num = n;
int count = 0;
while (num != 1){ //1이 되면 반환하기 때문에
//짝수 일때
if (num%2 ==0){
num /= 2;
//홀수 일때
} else {
num = num * 3 + 1;
}
count++;
//작업을 500번이상 했을 때
if(count > 500)
return -1;
}
return count;
}
}
[다른사람의 풀이]
- for문과 삼항연산자를 이용해 조금 더 간결하게 풀 수도 있다.
class Solution {
public int solution(int num) {
long n = (long)num;
for(int i =0; i<500; i++){
if(n==1) return i;
n = (n%2==0) ? n/2 : n*3+1;
}
return -1;
}
}
반응형
'알고리즘 > Java' 카테고리의 다른 글
[JAVA] 프로그래머스 없는숫자 더하기, 평균 구하기 (0) | 2021.11.09 |
---|---|
[JAVA] 프로그래머스 문자열을 정수로 바꾸기 (0) | 2021.11.09 |
[JAVA] 프로그래머스 수박수박수? (0) | 2021.11.08 |
[JAVA] 프로그래머스 내적 (0) | 2021.11.08 |
[JAVA] 프로그래머스 x만큼 간격이 있는 n개의 숫자 (0) | 2021.11.08 |