문제
내가 작성한 오답
: 주사위를 상자에 배치할 때 상자와 주사위의 배치 방식에 따라 실제로 들어갈 수 있는 주사위의 개수가 달라지는데 상자와 평행하게 넣는 조건을 제대로 고려하지 않았다.
class Solution {
public int solution(int[] box, int n) {
int answer = 0;
int volume = 1;
for(int a : box){
volume *= a;
}
answer = volume/(n*n*n);
return answer;
}
}
내가 작성한 정답
List
class Solution {
public int solution(int[] box, int n) {
int x = box[0]/n;
int y = box[1]/n;
int z = box[2]/n;
return x*y*z;
}
}
StreamAPI
import java.util.Arrays;
class Solution {
public int solution(int[] box, int n) {
return Arrays.stream(box)
.map(co->co/n)
.reduce(1, (a,b)->a*b);
}
}
StreamAPI에서 reduce
두 개의 매개변수를 사용
Optional<T> reduce(BinaryOperator<T> accumulator)
accumulator: 두 개의 요소를 받아서 하나의 요소로 결합하는 함수
이 형태는 결과가 Optional로 반환되며, 스트림이 비어 있을 경우 빈 Optional을 반환
세 개의 매개변수를 사용
T reduce(T identity, BinaryOperator<T> accumulator)
identity: 초기값으로 사용되는 요소
accumulator: 두 개의 요소를 받아서 하나의 요소로 결합하는 함수
이 형태는 스트림이 비어 있을 경우에도 초기값을 반환
Share article