[프로그래머스/181919] 콜리츠 수열 만들기
in Study / Coding Test
☑️ 문제
☑️ 풀이
첫 번째 풀이
- 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();
}
}
두 번째 풀이
- 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;
}
}