모든 챌린지
쉬움 0명 해결 정답률 0%

콜라츠 수열

1에 도달할 때까지 반으로 나누거나 세 배 후 1을 더하는 규칙을 따르세요.

n에서 시작합니다. n이 짝수라면 2로 나누고, 홀수라면 3을 곱한 뒤 1을 더합니다. 값이 1이 될 때까지 이 과정을 반복합니다. 시작 값과 마지막 1 모두를 답에 포함하세요.

collatz_sequence(n)을 구현하세요.

입력

n: 양의 정수 시작값입니다.

출력

전체 수열을 순서대로 반환하세요.

제약 조건

1 ≤ n ≤ 10,000. 이 범위의 입력은 모두 해당 규칙으로 1에 도달합니다. 수열의 모든 값은 부호 있는 64비트 정수 범위에 포함됩니다.

예시

예시 1
입력:
n = 6

예상 출력:
expected = [6, 3, 10, 5, 16, 8, 4, 2, 1]
입력:
long long n = 6;

예상 출력:
std::vector<long long> expected = {6, 3, 10, 5, 16, 8, 4, 2, 1};
입력:
long n = 6;

예상 출력:
long[] expected = new long[] {6, 3, 10, 5, 16, 8, 4, 2, 1};

설명

6은 짝수이므로 3이 됩니다. 그 다음 3은 10이 됩니다. 1이 될 때까지 계속 규칙을 적용하세요.

예시 2
입력:
n = 1

예상 출력:
expected = [1]
입력:
long long n = 1;

예상 출력:
std::vector<long long> expected = {1};
입력:
long n = 1;

예상 출력:
long[] expected = new long[] {1};

설명

시작 값이 이미 1이므로 변환이 필요하지 않습니다.

참고 자료

이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.