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

답
◽ 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