Java/Java 알고리즘

백준 14920번 3N+1 수열 JAVA 구현해보기

kimc 2022. 3. 22. 23:05

```

백준 14920번 3N+1 수열 JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1.  백준 14920번 풀이

https://www.acmicpc.net/problem/14920

 

14920번: 3n+1 수열

다음의 점화식에 의해 정해지는 수열 C(n)을 생각하자: C(n+1) = C(n)/2 (C(n)이 짝수일 때) = 3*C(n)+1 (C(n)이 홀수일 때) 초항 C(1)이 자연수로 주어지면, 이 점화식은 자연수로 이루어지는 수열을 정한다.

www.acmicpc.net

 

 

백준 14920번 3n+1수열은

난이도 브론즈 등급의 문제로서

 

숫자가 주어지고

해당 숫자가

짝수이면 C(n)/2를 해주고

홀수이면 3*C(n)+1을 해줄 때

몇 번 작업을 반복하면 1이 나오는지 확인해주는 문제입니다.


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


숫자 받아서 반복문에 넣고

해당 숫자가 나올 때까지 반복해주면 되는 문제입니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws IOException {

        //  초항
        long seqNum = Integer.parseInt(br.readLine());

        int cnt = 0;

        while (cnt < Integer.MAX_VALUE) {
            // 횟수 증가
            cnt++;
            // C(n)이 처음으로 1이 되면 종료
            if (seqNum == 1) {
                break;
            }
            // 3*C(n)+1 (C(n)이 홀수일 때)
            if (seqNum % 2 == 1) {
                seqNum = seqNum * 3 + 1;
            }
            // C(n)/2 (C(n)이 짝수일 때)
            else {
                seqNum = seqNum / 2;
            }
        }

        // 출력
        System.out.print(cnt);
    }
}

//codemasterkimc.tistory.com [김씨의 코딩 스토리]

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90