코린이의 소소한 공부노트

[프로그래머스/Lv.0] 콜라츠 수열 만들기 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.0] 콜라츠 수열 만들기

무지맘 2023. 5. 1. 11:44

1. Input, Output, Example

모든 자연수 x에 대해서 현재 값이 x이면 x가 짝수일 때는 2로 나누고, x가 홀수일 때는 3 * x + 1로 바꾸는 계산을 계속해서 반복하면 언젠가는 반드시 x1이 되는지 묻는 문제를 콜라츠 문제라고 부른다. 그리고 위 과정에서 거쳐간 모든 수를 기록한 수열을 콜라츠 수열이라고 한다.

계산 결과 1,000 보다 작거나 같은 수에 대해서는 전부 언젠가 1에 도달한다는 것이 알려져 있다.

- 초기값이 n인 콜라츠 수열을 반환

 

2. Constraint

1) 1 n 1,000

2) n은 정수

 

3. Code

1) 첫 코드(2023/05/01)

import java.util.*;
class Solution {
    public int[] solution(int n) {
        ArrayList<Integer> list = new ArrayList<>();
        while(n!=1){
            list.add(n);
            n = n%2==0 ? n/2 : 3*n +1;
        }
        list.add(1);
        int[] answer = new int[list.size()];
        for(int i=0 ; i<answer.length ; i++)
            answer[i] = list.get(i);
        return answer;
    }
}