문제
내가 작성한 정답
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