[프로그래머스/181919] 콜리츠 수열 만들기

☑️ 문제

프로그래머스 181919

☑️ 풀이

첫 번째 풀이

  • List → Array로 반환할 때 Stream을 사용하면 실행시간이 너무 느리게 나온다.
//시간: 29.96ms
//메모리: 74.6MB

import java.util.*;

class Solution {
    public int[] solution(int n) {
        List<Integer> list = new ArrayList<>();
        list.add(n);

        while (n != 1) {
            if (n % 2 == 0) {
                n /= 2;
            } else {
                n = 3 * n + 1;
            }
            list.add(n);
        }

        return list.stream().mapToInt(Integer::intValue).toArray();
    }
}

image

두 번째 풀이

  • List → Array로 반환할 때 반복문을 사용하면 실행시간이 단축된다.
    • 코딩테스트에서는 실행시간을 단축하기 위해 Stream 사용을 줄여야할 것 같다.
import java.util.*;

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

image


© 2021. All rights reserved.

yaejinkong의 블로그