본문 바로가기
문제 해결/BaekJoon

[백준] [C++] 17869번 Simple Collatz Sequence

by WSLim_97 2022. 11. 19.
반응형

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

 

17869번: Simple Collatz Sequence

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.

www.acmicpc.net


코드

#include <iostream>
using namespace std;

int main() {
	long long n;
	int count = 0;
	cin >> n;

	while (n > 1) {
		if (n % 2 == 0) {
			n = n / 2;
		}
		else {
			n = n + 1;
		}
		count++;
	}
	cout << count;

	return 0;
}

풀이

Simple Collatz Sequence의 식을 작성하여 함수 사용 횟수를 반환하는 문제이다.

 

함수 식은 문자 n을 입력받았을 때 함수 S(n)이 짝수이면 n / 2, S(n)이 홀수이면 n + 1을 진행하여 n이 1이 될 때까지 진행한다.

 

while문을 사용하여 반복하였고 count 변수에 함수의 반복 횟수를 1씩 증가시켰다.

 

마지막엔 그 count 변수를 출력한다.

 

처음에 입력값 n을 int형으로 작성하니 시간 초과가 떴다. 그래서 long long형으로 바꾸니 정답 처리가 되었다.

반응형