문제
내가 작성한 정답
import java.util.*;
import java.util.stream.*;
class Solution {
public int[] solution(int n) {
ArrayList<Integer> answer = new ArrayList<>();
answer.add(n);
while (n != 1){
if(n%2==0) {
n /= 2;
} else {
n = 3 * n + 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(
// 초기값 n, 조건 i >1, 다음 값의 정의
IntStream.iterate(n, i -> i > 1, i -> i % 2 == 0 ? i / 2 : i * 3 + 1),
// 숫자 1을 담은 단일 요소 스트림
IntStream.of(1))
// 배열로 변환해 반환
.toArray();
}
}
Share article