정수 n이 주어질 때, 홀수만 담은 배열(오름차순)을 리턴하는 문제였다.
import java.util.stream.IntStream;
class Solution {
public int[] solution(int n) {
return IntStream.rangeClosed(0, n).filter(value -> value % 2 == 1).toArray();
}
}
깔끔하게 작성된 정답코드...
IntStream
을 몰랐어서 List<Integer> list = new ArrayList<>();
로 리스트를 생성하고 for문을 사용해서 홀수를 넣어줬다.
그런데 list
를 바로 리턴할 수 없어서 찾아보니
int[] answer = list.stream()
.mapToInt(i -> i)
.toArray();
이렇게 쓰더라...
스트림을 정말 잘 써야겠다는 생각을 했다.
6조각씩 나눠져 나오는 피자를 n명이 모두 같은 개수의 조각을 먹으려면 총 몇 판을 주문해야 하는지 구하는 문제였다.
최소공배수를 구해야겠다는 생각이 들었다.
아직 최대공약수와 최소공배수 구하는 알고리즘을 외우지 못해서... 검색해봤다.
이전에는 이해하려고 하지 않고 그냥 가져다 써서 외우지 못했던 것 같다. 이해하니까 쉽다.
class Solution {
public static int getGCD(int a, int b) {
if (a % b == 0)
return b;
return getGCD(b, a % b);
}
public int solution(int n) {
int gcd = getGCD(n, 6);
return n / gcd;
}
}
그냥 최소공배수를 구하면 조각의 개수가 되기 때문에 총 몇 판을 주문해야 하는지 알려면 6으로 다시 나눠야 한다.
그래서 최소공배수((n * 6) / gcd
)에서 6을 곱하지 않고 바로 n / gcd
를 했다.