Written by
Sunwoo Han
on
on
[JAVA]콜라츠 추측
콜라츠 추측
문제 설명
1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.
1-1. 입력된 수가 짝수라면 2로 나눕니다.
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.
예를 들어, 입력된 수가 6이라면 6->3->10->5->16->8->4->2->1
이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수 solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 -1을 반환해 주세요.
제한 조건
- 입력된 수,
num
은 1 이상 8,000,000 미만인 정수입니다.
입출력 예시
n | result |
---|---|
6 | 8 |
16 | 4 |
626331 | -1 |
코드
class solution {
public int solution(long num) {
int answer = 0;
while(num != 1){
if((num % 2) == 0) {
num = num / 2;
} else {
num = (num * 3) + 1;
}
answer++;
}
if(answer > 500) {
answer = -1;
}
return answer;
}
}
설명
콜라츠 추측이라는 수식을 코드로 만드는 문제이다. 최종 값이 1이 될 때까지 조건을 반복하는데 입력된 수가 짝수일 때와 홀수일 때로 나눠서 각 조건이 실행될 때마다 answer의 값을 카운터로 두고 하나씩 증가하게 만들었다. 카운터가 500이 넘어가면 -1이 되도록 조건을 따로 두었다.
Comments
ALGORITHM 의 다른 글
-
[JAVA]1037. 약수 04 Jan 2021
-
[JAVA]1018. 체스판 다시 칠하기 04 Jan 2021
-
[JAVA]1010. 다리 놓기 04 Jan 2021
-
[JAVA]7576. 토마토 05 Dec 2020
-
[JAVA]1697. 숨바꼭질 04 Dec 2020
-
[JAVA]5337. 웰컴 03 Dec 2020
-
[JAVA]5217. 쌍의 합 03 Dec 2020
-
[JAVA]4892. 숫자 맞추기 게임 03 Dec 2020
-
[JAVA]4101. 크냐? 02 Dec 2020
-
[JAVA]2558. A+B - 2 02 Dec 2020
-
[JAVA]1550. 16진수 02 Dec 2020
-
[JAVA]압축 25 Oct 2020
-
[JAVA]빗물 25 Oct 2020
-
[JAVA]유기농 배추 22 Oct 2020
-
[JAVA]미로 탐색 21 Oct 2020
-
[JAVA]옥상 정원 꾸미기 08 Oct 2020
-
[JAVA]탑 08 Oct 2020
-
[JAVA]안정적인 문자열 07 Oct 2020
-
[JAVA]균형잡힌 세상 07 Oct 2020
-
[JAVA]괄호의 값 06 Oct 2020
-
[JAVA]쇠막대기 06 Oct 2020
-
[JAVA]카드2 05 Oct 2020
-
[JAVA]큐 2 05 Oct 2020
-
[JAVA]제로 05 Oct 2020
-
[JAVA]괄호 04 Oct 2020
-
[JAVA]AC 04 Oct 2020
-
[JAVA]회전하는 큐 04 Oct 2020
-
[JAVA]스택 수열 04 Oct 2020
-
[JAVA]덱 03 Oct 2020
-
[JAVA]큐 03 Oct 2020
-
[JAVA]스택 03 Oct 2020
-
[JAVA]애너그램 만들기 03 Oct 2020
-
[JAVA]키로거 02 Oct 2020
-
[JAVA]요세푸스 문제 02 Oct 2020
-
[JAVA]방 번호 02 Oct 2020
-
[JAVA]방 배정 01 Oct 2020
-
[JAVA]Strfry 28 Sep 2020
-
[JAVA]에디터 28 Sep 2020
-
[JAVA]개수 세기 28 Sep 2020
-
[JAVA]알파벳 개수 28 Sep 2020
-
[JAVA]별 찍기 - 9 27 Sep 2020
-
[JAVA]별 찍기 - 8 27 Sep 2020
-
[JAVA]별 찍기 - 7 27 Sep 2020
-
[JAVA]별 찍기 - 6 27 Sep 2020
-
[JAVA]별 찍기 - 5 27 Sep 2020
-
[JAVA]별 찍기 - 4 27 Sep 2020
-
[JAVA]별 찍기 - 3 26 Sep 2020
-
[JAVA]별 찍기 - 2 26 Sep 2020
-
[JAVA]별 찍기 - 1 26 Sep 2020
-
[JAVA]카드 역배치 26 Sep 2020
-
[JAVA]핸드폰 요금 26 Sep 2020
-
[JAVA]숫자의 개수 25 Sep 2020
-
[JAVA]숫자 25 Sep 2020
-
[JAVA]일곱 난쟁이 25 Sep 2020
-
[JAVA]대표값2 25 Sep 2020
-
[JAVA]홀수 25 Sep 2020
-
[JAVA]최댓값 24 Sep 2020
-
[JAVA]윷놀이 24 Sep 2020
-
[JAVA]주사위 세개 24 Sep 2020
-
[JAVA]윤년 24 Sep 2020
-
[JAVA]세수정렬 24 Sep 2020
-
[JAVA]시험 성적 23 Sep 2020
-
[JAVA]사칙연산 23 Sep 2020
-
[JAVA]고양이 23 Sep 2020
-
[JAVA]Hello World 23 Sep 2020
-
[JAVA]A+B 23 Sep 2020
-
[JAVA]콜라츠 추측 22 Aug 2020
-
[JAVA]평균 구하기 22 Aug 2020
-
[JAVA]하샤드 수 21 Aug 2020
-
[JAVA]핸드폰 번호 가리기 21 Aug 2020
-
[JAVA]행렬의 덧셈 20 Aug 2020
-
[JAVA]x만큼 간격이 있는 n개의 숫자 20 Aug 2020
-
[JAVA]직사각형 별찍기 11 Aug 2020