내가 생각했을때 문제에서 원하는부분
Input consists of a single line which contains a positive decimal integer, n, which starts the sequence.
n will fit in a 32-bit unsigned integer.
The output consists of a single line that contains the value of A(n), the number of steps in the SCS starting at n.
내가 이 문제를 보고 생각해본 부분
BufferedReader를 사용하여 입력을 받는다.
BufferedReader를 사용하여 입력받은 문자열을 long 타입의 정수로 변환하여 n에 저장한다.
while루프를 통해 n이 1이 될때까지 Collatz 수열을 계산한다.
n이 짝수일 경우, n을 2로 나누고,
홀수일 경우, n에 1을 더한다.
단계 수를 서게 위해 steps 변수를 증가시킨다.
steps를 출력한다.
코드로 구현
package baekjoon.baekjoon_26;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 백준 17869번 문제
public class Main914 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
long n = Long.parseLong(br.readLine());
int steps = 0;
while(n != 1) {
if(n % 2 == 0) {
n /= 2;
} else {
n += 1;
}
steps++;
}
System.out.println(steps);
br.close();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.