에라토스테네스의 체
를 사용한다는 정보와 관련 코드를 발견했고, 코드를 살펴보았다.ctrl+c
ctrl+v
처럼 보이지만 코드를 이해한 다음 내가 비슷한 방향으로 직접 작성해 본 것에 의의를 둔다.function solution(n) {
var answer = 0;
var before = []
for(var i=0; i<=n; i++){ //입력받은 숫자까지 배열에 담아줌
before.push(i)
}
for(var j=2; j*j<=n; j++){
if(before[j]){ //해당 배열의 값이 0이 아니라면
for(var k=j*j; k<=n; k+=j){ //j*j값부터 j만큼 증가시키면서 k위치의 값을 0으로 만듦
before[k]=0;
}
}
}
before[1] = 0;
answer = before.filter((c)=>c).length
return answer;
}
🔥for(var j=0; j*j<=n; i++){}
와 for(var k=j*j; k<=n; k+=j){}
는 이해하기 어렵기도 했고 나중에 다시 까먹을 것 같아서 나름대로 정리를 해봤다. 알고리즘의 진행을 이해못한 것이 아니고 왜 제곱을 사용했는지에 대한 정의? 증명?을 해서 분명히 알고 싶었다.
=>일단 이유와 원리는 알겠다. 하지만 말로 설명하기는 아직 무리인 것 같다.. 지금 이거만 붙잡고도 몇시간을 있었는데ㅠㅠ 하지만 내 목표는 내가 깔끔하게 이해하는 것
+다음에 헷갈리거나 까먹을 때 봐도 바로 이해할 수 있도록 나만의 방법으로 정리하는 것
이었기 때문에 여기까지 정리하는 것으로 한다.