Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 콜라츠 수열 만들기 (Java/자바) 본문

알고리즘문제/프로그래머스(Java)

[프로그래머스] - 콜라츠 수열 만들기 (Java/자바)

luke-king 2025. 10. 22. 22:32

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/181919

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


import java.util.*;

class Solution {
    public int[] solution(int n) {
        List<Integer> list = new ArrayList<>();
        int num = n;
        
        while(num != 1){
            list.add(num);
            if(num % 2 == 0){
                num = num / 2;
            }else{
                num = 3 * num + 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;
    }
}

이번 문제는 프로그래머스 "콜라츠 수열 만들기" 문제다.

문제 접근 하는 데는 지문 그대로 하면 되기에 크게 어려움 없이 바로 문제 풀이 해보겠다.

 

1. 배열의 길이를 처음에 지정해줄 수 없기에 List <>를 사용한다.

 

2. while문의 조건은 (num != 1)로 해준다 이유는 콜라츠 수열은 1이 되면 더 이상 없기에 종료되어야 하기 때문이다.

 

3. list.add(num) 으로 짝수 일 땐 2로 나눈 값을 넣어주고 홀수 일 때  3 * num + 1의 값을 넣어준다.

 

4. 마지막으로 1은 항상 나오기에 list에 값을 넣어준다.

 

5. answer[]의 사이즈는 list에 값이 다 들어갔으니 list.size로 배열의 길이를 정해준다.

 

6. 마지막으로 for문을 사용해 answer[]에 list에 있는 값을 꺼내 넣어준다. 그럼 끝이다.