※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 5679번 문제인 Hailstone Sequences이다.
문제는 아래 링크를 확인하자.

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

 

5679번: Hailstone Sequences

Consider the sequence formed by starting from a positive integer h0 and iterating with n = 1, 2, ... the following definition until hn = 1: hn = hn-1 / 2 (if hn-1 is even) hn = 3 × hn-1 + 1 (if hn-1 is odd) For instance, if we start with h0 = 5 the follow

www.acmicpc.net

주어지는 수가 우박수(콜라츠 수열)의 규칙을 따라 1로 수렴해갈 때 중간단계에서 등장하는 가장 큰 수를 찾는 문제이다.

 

주어지는 각 수에 대하여 그 수가 1이 될 때까지 짝수면 나누기 2를, 홀수면 곱하기3 더하기1을 반복하고 각 계산결과를 기존 계산결과들의 최댓값과 비교해 답을 얻어내자.

 

맨 처음 시작할 때 주어지는 수가 답이 될 수도 있음에 유의해 답을 구하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int N; cin >> N;
	while (N) {
		int ans = N;
		while (N > 1) {
			if (N & 1) N = 3 * N + 1;
			else N >>= 1;
			ans = max(ans, N);
		}

		cout << ans << '\n';
		cin >> N;
	}
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 21347 // C++] Keyboardd  (0) 2022.08.30
[BOJ 24313 // C++] 알고리즘 수업 - 점근적 표기 1  (1) 2022.08.29
[BOJ 2999 // C++] 비밀 이메일  (0) 2022.08.28
[BOJ 2057 // C++] 팩토리얼 분해  (0) 2022.08.28
[BOJ 24855 // C++] Natives  (0) 2022.08.28

+ Recent posts