소수 문제에서 소수 구하는 로직을 짤때 for문 돌릴때, for문 돌아가는 범위를 i< Math.sqrt() 로 제곱근까지만 돌리면 된다. 16의 약수를 1,2,4,8,16 이라 할때 16을 제외하면 약수가 1,2,4 4x2 인데 16의 제곱근 4까지만 향하게 되면 이후 약수는 제곱근 이하의 약수들끼리 곱으로 형성 되므로, 결국 for문은 제곱근 이상으로 돌릴 필요가 없게 된다.
arr. sort function 사용시 arr.sort()의 핵심은 2가지가 있는데,
1. 파라미터 a,b에서 a는 next를, b는 prev를 의미하는 것과
2. return 값이 -1일 때 값 변동이 있다
는 것이다.
즉 흔히 arr.sort((a,b) => a - b)) 오름차순
arr.sort((a,b) => b - a) 내림차순으로 기억하는데,
sort함수에서
sort(a,b => a - b)는 sort((next, prev) => next - prev) 라는 뜻이다.
즉 흔히 생각하는 a가 배열에 첫요소도, b가 둘째 요소인 방식이 아니라,
첫요소를 b로 잡고 다음 요소값을 a로 잡는다.
그래서 콜백함수에서 a-b 즉 두번째 요소 - 첫번째 요소 값이 -1이면 위치이동이 일어난다
는 뜻이므로, 풀어보자면 첫번째 요소 값이 두번째 요소보다 더 크면 위치이동, 전자가 후자보다 더크면 위치이동, 즉 오름차순이 되고
b-a는 첫번째 요소 - 두번째 요소 값이 -1이면 위치이동 이니깐,
후자가 전자 보다 더 크면 위치이동, 즉 내림차순이 된다.
sort는 배열 복사가 아니라 원본 값을 변경한다.