Post

[BOJ/백준] 17869번 : Simple Collatz Sequence (Java)

📘 백준 17869번 : Simple Collatz Sequence


문제 바로가기


💡 문제 풀이


S(k) = (k가 짝수면 k/2, 홀수면 (k+1))

n, S(n), S(S(n)), … 은 무조건 1이 됨 => 1이 될 때까지 수식을 적용하며 반복한 횟수를 카운트


✅ 코드 (Java)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

// https://www.acmicpc.net/problem/17869
// S(k) = (k가 짝수면 k/2, 홀수면 (k+1))
public class B17869_Simple_Collatz_Sequence {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		long n = Long.parseLong(br.readLine());
		int cnt = 0; // 1이 되기까지의 횟수
		while (n != 1) {
			if (n % 2 == 0) { // 짝수
				n /= 2;
			} else { // 홀수
				n += 1;
			}
			cnt++;
		}
		System.out.println(cnt); // 출력
		br.close();
	}
}


💾 제출 결과


보러 가기