
내가 작성한 코드
import java.util.*;
class Solution {
public int[] solution(int n) {
List<Integer> answer = new ArrayList<>();
answer.add(n);
while(n != 1) {
if(n % 2 == 0) {
n /= 2;
answer.add(n);
}
else {
n = n * 3 + 1;
answer.add(n);
}
}
return answer.stream().mapToInt(i -> i).toArray();
}
}
다른 사람의 코드
import java.util.stream.IntStream;
class Solution {
public int[] solution(int n) {
return IntStream.concat(
// 콜라츠 추측 수열 생성 (1이 되기 전까지)
IntStream.iterate(n, i -> i > 1, i -> i % 2 == 0 ? i / 2 : i * 3 + 1),
// 마지막으로 1 추가 (수열이 1로 끝나야 함)
IntStream.of(1))
// 최종 결과를 배열로 변환
.toArray();
}
}
IntStream.iterate(초기값, 종료 조건, 다음 값 계산)
Share article