반응형
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형으로 바꾸니 정답 처리가 되었다.
반응형
'문제 해결 > BaekJoon' 카테고리의 다른 글
[백준] [C++] 23795번 사장님 도박은 재미로 하셔야 합니다 (0) | 2022.11.19 |
---|---|
[백준] [C++] 23037번 5의 수난 (0) | 2022.11.19 |
[백준] [C++] 15700번 타일 채우기 4 (0) | 2022.11.19 |
[백준] [C++] 15000번 CAPS (0) | 2022.11.18 |
[백준] [C++] 14681번 사분면 고르기 (0) | 2022.11.18 |