[프로그래머스] Lv.0 배열만들기 1 (새로운 배열 생성)

[프로그래머스] Lv.0 배열만들기 1 (새로운 배열 생성)
muaga's avatar
May 12, 2024
[프로그래머스] Lv.0 배열만들기 1 (새로운 배열 생성)
 
notion image
 


List

import java.util.ArrayList; import java.util.Arrays; import java.util.List; class Solution { public int[] solution(int n, int k) { List<Integer> list = new ArrayList<>(); for (int a = 1; a <= n; a++) { int number = k * a; if (number > n) { break; } list.add(number); } int[] answer = list.stream().mapToInt(Integer::intValue).sorted().toArray(); return answer; } }
새로운 배열의 기능을 용이하기 위해 List를 생성하여 원하는 데이터를 담은 후 다시 배열로 변환했다. 코드 읽기는 쉬웠으나, 다른 분들의 풀이를 보니 굳이 List를 사용하지 않고, 배열 만으로 로직을 구현하여 조금 더 간단하고 동작이 적은 코드를 작성할 수 있다는 깨달음을 얻을 수 있었다. return 값이 배열일 때, 굳이 List를 사용하지 않고 배열에서 제공하는 기능 만으로 로직을 구현하는 연습이 필요하다.
 

다른 사람의 풀이


◽ IntStream

import java.util.stream.IntStream; class Solution { public int[] solution(int n, int k) { return IntStream.rangeClosed(1, n).filter(i -> i % k == 0).toArray(); } }
 

◽ List만들지 않고, 배열 만으로 풀이

class Solution { public int[] solution(int n, int k) { int count = n / k; int[] answer = new int[count]; for (int i = 1; i <= count; i++) { answer[i - 1] = k * i; } return answer; } }
배열의 크기를 미리 설정하여 배열의 크기를 고정하고, 별도의 조건문이 없이 로직을 구현하는 방법이 있었다.
Share article

muaga's Hub