[알고리즘문제풀기] 콜라츠 수열 만들기

silver's avatar
Mar 17, 2025
[알고리즘문제풀기] 콜라츠 수열 만들기

문제

내가 작성한 정답

ArrayList

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

ArrayList + StreamAPI

import java.util.ArrayList; class Solution { public int[] solution(int n) { ArrayList<Integer> answer11 = new ArrayList<>(); while(n!=1){ answer11.add(n); if(n%2==0) n = n/2; else n = n*3 +1; } answer11.add(1); return answer11.stream().mapToInt(i->i).toArray(); } }

StreamAPI

import java.util.stream.*; class Solution { public int[] solution(int n) { return IntStream.concat( IntStream.iterate(n, i -> i != 1, i -> (i % 2 == 0) ? i / 2 : i * 3 + 1), IntStream.of(1)) .toArray(); } }

다른 사람들의 정답

StreamAPI

import java.util.*; import java.util.stream.Stream; class Solution { public int[] solution(int n) { return Stream.iterate(n, i -> i >= 1, i -> i == 1 ? 0 : i % 2 == 0 ? i / 2 : 3 * i + 1) .mapToInt(Integer::intValue) .toArray(); } }
import java.util.stream.*; class Solution { public int[] solution(int n) { return IntStream.iterate(n, i -> i >= 1, i -> (i==1)? 0 : (i % 2 == 0) ? i / 2 : i * 3 + 1) .toArray(); } }

Queue

import java.util.LinkedList; import java.util.Queue; class Solution { public int[] solution(int n) { Queue<Integer> answer = new LinkedList<>(); // Queue를 생성 (LinkedList 사용) while (n > 1) { answer.add(n); // 현재 숫자를 큐에 추가 if (n % 2 == 0) n >>= 1; else n = n * 3 + 1; } answer.add(1); // 큐를 배열로 변환하여 반환 return answer.stream().mapToInt(i -> i).toArray(); } }
💡

큐(Queue)

FIFO(First In, First Out) 구조를 가진 데이터 구조로 먼저 들어온 데이터가 먼저 나간다.
LinkedList: Java에서 Queue 인터페이스를 구현하는 대표적인 클래스이다. LinkedList는 노드로 구성된 리스트로, 요소의 추가 및 삭제가 빠르다.
주요 메서드 • add(E e): 요소를 큐의 끝에 추가 (꽉 차 있으면 예외 발생) • offer(E e): 요소를 큐의 끝에 추가 (꽉 차 있어도 예외 발생 안 함) • remove(): 큐의 첫 번째 요소를 제거하고 반환 (비어있으면 예외 발생) • poll(): 큐의 첫 번째 요소를 제거하고 반환 (비어있으면 null 반환) • peek(): 큐의 첫 번째 요소를 반환 (제거하지 않음) • element(): 큐의 첫 번째 요소를 반환 (비어있으면 예외 발생)
 
Share article

silver