일단 저는 완전 제곱수라는게 뭔지 몰라서 검색해보니
제곱해서 특정한 수가 나오면 그것이 완전 제곱수라는 것입니다.
이말대로라면 완전 제곱수의 특징이 있습니다.
완전 제곱수는 루트 값이 정수 입니다.
정수가 아닌 유리수인 경우에는 루트의 값이 정수로는 표기 될 수 없겠죠
double k = Math.sqrt(i);
if (Math.ceil(k) == Math.floor(k)) {
arr.add(i);
}
루트로 씌운 값을 가지고 정수로 판별하는 방식을 사용하였습니다
ceil(올림) floor(내림) 을 했을때 값이 같다면 이것은 정수입니다
int sum = arr.stream().mapToInt(Integer::valueOf).sum();
저는 오래간만에 스트림 함수를 사용해주었습니다.
for문으로 더해줘도 됩니다.
min값은 그냥 통으로 정렬해서 0번째 수에 해당하는 값을 출력하였습니다.