[JAVA 문제 풀이] 123. 콜라츠 수열 만들기

프로그래머스 (181919)
Stupefyee's avatar
Mar 06, 2025
[JAVA 문제 풀이] 123. 콜라츠 수열 만들기
notion image
 

내가 작성한 코드

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

stupefyee