-
[자바스크립트] 프로그래머스 Lv.1 소수 찾기[TIL] 카테고리/알고리즘 문제풀기 2022. 5. 27. 12:55
우와 이건 조금 힘들었다. 원래 어제 풀었어야 하는데,
쉽지 뭐~♬ 하고 풀어서 제출했더니 타임 아웃이 떠서
??? 상태로 수학 공부를 하다가 오늘 아침에야 풀었다
(.....)
처음에는 2와 n 사이의 모든 숫자가 소수인지 검증하는 알고리즘에서
(1은 어차피 아니니까...)2와 n의 제곱근 사이의 소수를 구해 배열에 넣었다가
다시 2와 n 사이의 숫자가 배열에 있는 숫자로 나누어 떨어지는지 검증했다.
이렇게 숫자를 줄여서도 혹시 또 타임아웃 걸릴까봐
무언가로라도 나누어떨어지는순간 break를 때렸다..
let temp = [] let prime = true for(i=2; i <= Math.sqrt(n); i++) { for(j=2; j<i; j++) { prime = true if(i % j === 0){ prime = false break; } } if (prime === true) { temp.push(i) } } for(i=2; i<=n; i++) { prime = true for(j=0; j<temp.length; j++){ if(i%temp[j] === 0 && i !== temp[j]) { prime = false break; } } if (prime === true) { answer++ } }
어찌어찌 넘어갔다. 다행이다..
다른 사람들 풀이는 더 짧은것도 많긴 한데
딱히 우와- 스러운건 몇개 없어서 그냥 눈으로만 봐뒀다.
다른 사람들이 쓴 방법들
- 무언가로 나누어지는 수를 카운트해서 n에서 빼준다
- if문에서 && 사용할때 왼쪽이 true 라면 오른쪽 값이 반환되는 성질을 사용해서
소수들을 &&로 무지막지하게 엮어두셨다. 광기가 느껴졌다.그 다음에는 다시 삼항 연산자를 중첩... 몇항이야 이거. 광기가 더++ 느껴졌다.
4줄이라고 해줘도 좋은지 모르겠지만 4줄짜리 코드다.
- Set을 사용한다 -> 코드는 예뻤는데 배열 쓰는 것 보다 속도가 더 느리다고 한다. 그래도 예뻤다..
'[TIL] 카테고리 > 알고리즘 문제풀기' 카테고리의 다른 글
[자바스크립트] 프로그래머스 Lv.1 체육복 (0) 2022.05.29 [자바스크립트] 프로그래머스 Lv.1 실패율 (0) 2022.05.27 [자바스크립트] 프로그래머스 Lv.1 K번째수 (0) 2022.05.26 [자바스크립트] 프로그래머스 Lv.1 나머지가 1이 되는 수 찾기 (0) 2022.05.24 [자바스크립트] 프로그래머스 Lv.1 최대공약수와 최소공배수 (0) 2022.05.23