백준 3n+1 수열

KIMYEONGJUN·2025년 4월 11일
0
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

C(1); 1 ≤ C(1) ≤ 100000

C(n)이 처음으로 1이 되는 n

내가 이 문제를 보고 생각해본 부분

BufferedReader: 입력을 받기 위해 BufferedReader를 사용한다.
C1 초기화: 입력으로 받은 자연수를 C1에 저장한다.
while 루프: C1이 1이 아닐 때까지 반복한다.
짝수일 경우: C1을 2로 나눈다.
홀수일 경우: C1에 3을 곱하고 1을 더한다.
n을 증가시킨다.
출력: C(n)이 1이 되는 최초의 n을 출력해준다.

코드로 구현

package baekjoon.baekjoon_27;

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

// 백준 14920번 문제
public class Main988 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int C1 = Integer.parseInt(br.readLine());

        int n = 0; // C(n)이 1이 되는 n을 카운트
        while(C1 != 1) {
            n++;
            if(C1 % 2 == 0) {
                C1 /= 2;
            } else {
                C1 = 3 * C1 + 1;
            }
        }

        System.out.println(n + 1); // C(n)이 1이 되는 n을 출력 (n을 0부터 세므로 +1)
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글